On Saturday, 6 August 2016 at 09:35:32 UTC, Walter Bright wrote:
On 8/6/2016 1:21 AM, Ilya Yaroshenko wrote:
We need 2 new pragmas with the same syntax as `pragma(inline,
xxx)`:
1. `pragma(fusedMath)` allows fused mul-add, mul-sub, div-add,
div-sub operations.
2. `pragma(fastMath)` equivalents to [1]. This pragma can be
used to allow
extended precision.
The LDC fastmath bothers me a lot. It throws away proper NaN
and infinity handling, and throws away precision by allowing
reciprocal and algebraic transformations. As I've said before,
correctness should be first, not speed, and fastmath has
nothing to do with this thread.
OK, then we need a third pragma,`pragma(ieeeRound)`. But
`pragma(fusedMath)` and `pragma(fastMath)` should be presented
too.
I don't know what the point of fusedMath is.
It allows a compiler to replace two arithmetic operations with
single composed one, see AVX2 (FMA3 for intel and FMA4 for AMD)
instruction set.