summaryrefslogtreecommitdiff
path: root/compiler/prelude
diff options
context:
space:
mode:
authorchessai <chessai1996@gmail.com>2019-02-01 13:01:46 -0500
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-06-09 18:41:02 -0400
commitf737033329817335bc01ab16a385b4b5ec5b3b5d (patch)
treec437a8e0f813be553bec23b6cc9e9dd960707ddd /compiler/prelude
parenta018c3a84c88f6208e7bd5587af1cdf40c2ae991 (diff)
downloadhaskell-f737033329817335bc01ab16a385b4b5ec5b3b5d.tar.gz
Introduce log1p and expm1 primops
Previously log and exp were primitives yet log1p and expm1 were FFI calls. Fix this non-uniformity.
Diffstat (limited to 'compiler/prelude')
-rw-r--r--compiler/prelude/primops.txt.pp22
1 files changed, 22 insertions, 0 deletions
diff --git a/compiler/prelude/primops.txt.pp b/compiler/prelude/primops.txt.pp
index 39e7c4799c..5b5dd9dc8d 100644
--- a/compiler/prelude/primops.txt.pp
+++ b/compiler/prelude/primops.txt.pp
@@ -763,12 +763,23 @@ primop DoubleExpOp "expDouble#" Monadic
with
code_size = { primOpCodeSizeForeignCall }
+primop DoubleExpM1Op "expm1Double#" Monadic
+ Double# -> Double#
+ with
+ code_size = { primOpCodeSizeForeignCall }
+
primop DoubleLogOp "logDouble#" Monadic
Double# -> Double#
with
code_size = { primOpCodeSizeForeignCall }
can_fail = True
+primop DoubleLog1POp "log1pDouble#" Monadic
+ Double# -> Double#
+ with
+ code_size = { primOpCodeSizeForeignCall }
+ can_fail = True
+
primop DoubleSqrtOp "sqrtDouble#" Monadic
Double# -> Double#
with
@@ -904,12 +915,23 @@ primop FloatExpOp "expFloat#" Monadic
with
code_size = { primOpCodeSizeForeignCall }
+primop FloatExpM1Op "expm1Float#" Monadic
+ Float# -> Float#
+ with
+ code_size = { primOpCodeSizeForeignCall }
+
primop FloatLogOp "logFloat#" Monadic
Float# -> Float#
with
code_size = { primOpCodeSizeForeignCall }
can_fail = True
+primop FloatLog1POp "log1pFloat#" Monadic
+ Float# -> Float#
+ with
+ code_size = { primOpCodeSizeForeignCall }
+ can_fail = True
+
primop FloatSqrtOp "sqrtFloat#" Monadic
Float# -> Float#
with