aboutsummaryrefslogtreecommitdiff
path: root/FutureFeatures.md
diff options
context:
space:
mode:
authorDan Gohman <sunfish@mozilla.com>2015-06-08 12:39:21 -0800
committerDan Gohman <sunfish@mozilla.com>2015-06-12 14:26:17 -0700
commit071bc0fd8e9ce738f00a3f699c24460806058b38 (patch)
treeaf2785abf82a11ef346c00bd832b374799663e24 /FutureFeatures.md
parentc00ddd4345019805f9c01c93c354936002e60535 (diff)
downloadnanowasm-design-071bc0fd8e9ce738f00a3f699c24460806058b38.tar.gz
Move floating-point libary intrinsics into FutureFeatures.md.
Diffstat (limited to 'FutureFeatures.md')
-rw-r--r--FutureFeatures.md34
1 files changed, 34 insertions, 0 deletions
diff --git a/FutureFeatures.md b/FutureFeatures.md
index 8e32bc7..7eaca32 100644
--- a/FutureFeatures.md
+++ b/FutureFeatures.md
@@ -238,3 +238,37 @@ use cases:
* Float64MaxNum - maximum; if exactly one operand is NaN, returns the other operand
MinNum, and MaxNum operations would treat -0 as being effectively less than 0.
+
+## Floating-point library intrinsics
+
+These operations aren't needed because they can be implemented in WebAssembly
+code and linked into WebAssembly modules as at small size cost, and this avoids
+a non-trivial specification burden of their semantics/precision. Adding these
+intrinsics would allow for better high-level backend optimization of these
+intrinsics that require builtin knowledge of their semantics. On the other
+hand, a code generator may continue to statically link in its own
+implementation since this provides greater control over precision/performance
+tradeoffs.
+
+ * Float64Sin - trigonometric sine
+ * Float64Cos - trigonometric cosine
+ * Float64Tan - trigonometric tangent
+ * Float64ASin - trigonometric arcsine
+ * Float64ACos - trigonometric arccosine
+ * Float64ATan - trigonometric arctangent
+ * Float64ATan2 - trigonometric arctangent with two arguments
+ * Float64Exp - exponentiate e
+ * Float64Ln - natural logarithm
+ * Float64Pow - exponentiate
+ * Float32Sin - trigonometric sine
+ * Float32Cos - trigonometric cosine
+ * Float32Tan - trigonometric tangent
+ * Float32ASin - trigonometric arcsine
+ * Float32ACos - trigonometric arccosine
+ * Float32ATan - trigonometric arctangent
+ * Float32ATan2 - trigonometric arctangent with two arguments
+ * Float32Exp - exponentiate e
+ * Float32Ln - natural logarithm
+ * Float32Pow - exponentiate
+
+The rounding behavior of these operations would need clarification.