I have a question regarding the -ffp-contract
flag in GNU GCC (see https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html).
The flag documentation is written as follows:
-ffp-contract=off
disables floating-point expression contraction.-ffp-contract=fast
enables floating-point expression contraction such as forming of fused multiply-add operations if the target has native support for them.-ffp-contract=on
enables floating-point expression contraction if allowed by the language standard. This is currently not implemented and treated equal to-ffp-contract=off
. The default is-ffp-contract=fast
.
Now the question:
- What is the difference between fast and on?
- Is there any other contraction example beside the FMA (or similar like the fused-mult sub)?