На icc 19 скалярное произведение компилируется в цикл по инструкции fma. На clang и gcc fma генерируется только с -ffast-math
.
Однако -ffast-math
нарушает соответствие IEEE, но fma полностью совместима с IEEE-754 2008, поэтому, если мне придется компилировать с -ffast-math
, то у меня возникают другие проблемы.
Почему gcc и clang не генерируют инструкции fma без -ffast-math
?
Godbolt ; флаги компилятора: -O3 -march=skylake-avx512
, + - -ffast-math
.