diff options
| author | Dan Gohman <sunfish@mozilla.com> | 2015-06-08 12:39:14 -0800 |
|---|---|---|
| committer | Dan Gohman <sunfish@mozilla.com> | 2015-06-12 14:26:17 -0700 |
| commit | 35a1f2fcfcb174f9dbe3775fc75cad140e97e55e (patch) | |
| tree | 7b6e9240a62c57749f355093e9fea749f3cb217b /AstSemantics.md | |
| parent | 3b9e3d2c99f071899c25765ba30ec36693f4a7fc (diff) | |
| download | nanowasm-design-35a1f2fcfcb174f9dbe3775fc75cad140e97e55e.tar.gz | |
Recategorize the floating-point operations "under consideration".
min/max - Promote these to base; they are all trivially polyfillable,
and are useful things to have in the base platform besides.
nearestInt - This is not trivially polyfillable (JavaScript's Math.round
does tie-breaking wrong), so put it in EssentialPostMVPFeatures.md so it
can join floor/ceil.
trunc - This is not trivially polyfillable (in ES6, but not in all the
browsers we need the polyfill to support), so put it in
EssentialPostMVPFeatures.md so it can join floor/ceil/nearestInt in
providing rouding to integer via all the standard roundings.
minNum/maxNum - Put these in FutureFeatures.md for future consideration.
They're not trivially polyfillable, and they're not obviously essential
at this point, though they do have uses.
Diffstat (limited to 'AstSemantics.md')
| -rw-r--r-- | AstSemantics.md | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/AstSemantics.md b/AstSemantics.md index a3014f8..6143c8e 100644 --- a/AstSemantics.md +++ b/AstSemantics.md @@ -360,6 +360,8 @@ Floating point arithmetic follows the IEEE-754 standard, except that: * Float32Lt - less than * Float32Le - less than or equal * Float32Sqrt - square root + * Float32Min - minimum; if either operand is NaN, returns NaN + * Float32Max - maximum; if either operand is NaN, returns NaN * Float64Add - addition * Float64Sub - subtraction @@ -374,24 +376,10 @@ Floating point arithmetic follows the IEEE-754 standard, except that: * Float64Lt - less than * Float64Le - less than or equal * Float64Sqrt - square root - -Operations under consideration: - - * Float32Min - minimum; if either operand is NaN, returns NaN - * Float32Max - maximum; if either operand is NaN, returns NaN - * Float32MinNum - minimum; if exactly one operand is NaN, returns the other operand - * Float32MaxNum - maximum; if exactly one operand is NaN, returns the other operand - * Float32Trunc - round to nearest integer towards zero - * Float32NearestInt - round to nearest integer, ties to even - * Float64Min - minimum; if either operand is NaN, returns NaN * Float64Max - maximum; if either operand is NaN, returns NaN - * Float64MinNum - minimum; if exactly one operand is NaN, returns the other operand - * Float64MaxNum - maximum; if exactly one operand is NaN, returns the other operand - * Float64Trunc - round to nearest integer towards zero - * Float64NearestInt - round to nearest integer, ties to even -Min, Max, MinNum, and MaxNum operations would treat -0 as being effectively less than 0. +Min and Max operations treat -0 as being effectively less than 0. ## Datatype conversions, truncations, reinterpretations, promotions, and demotions |
