20.04.2013 3:37, Mathias Gaunard:
For instance, there is FMA instruction "d=a+b*c" - yes, your proposal have appropriate fma function in <cmath>. But imagine that some new architecture would have "double FMA" instruction like: "f=a+b*c+d*e", or even more complex instruction: "2x2 matrix multiplication".
It is relatively easy for compilers to transform a*b+c to fma(a,b,c) (even if the operations involved are SIMD intrinsics). As a matter of fact, compilers already do it.
And what is your point? Do you mean that we should rely on auto-vectorizer? Quote from proposal: "Autovectorizers have the ability to detect code fragments that can be vectorized. This automatic process nds its limits when the user code is not presenting a clear vectorizable pattern (i.e. complex data dependencies, non-contiguous memory accesses, aliasing or control ows). The SIMD code generation stays fragile and the resulting instruction ow may be suboptimal compared to an explicit vectorization." -- Evgeny Panasyuk