【发布时间】:2017-08-27 15:39:10
【问题描述】:
在我的 C 程序中,我希望处理器使用 FMADD 指令而不是 MUL 和 ADD 来计算 a*b +c。我如何将此指定给编译器以执行此操作。另外我想在编译后在汇编代码中看到 FMADD 指令。
gcc 版本 4.9.2 ARM v7 处理器
【问题讨论】:
-
使用 math.h 中的函数
fma,并确保将合适的 -march 标志传递给编译器。 -
好的。有用。是否可以使用 FP_CONTRACT 和通常的 *, + 运算符而不是 fma ?我试过#pragma STDC FP_CONTRACT ON。它没有工作
-
根据您的 -march 和 -ffp-contract 标志,您甚至可能不需要任何编译指示。默认情况下,gcc 会在原生支持 fma 的目标上进行收缩。
-
添加
-ffast-math是否有助于让编译器通过加法和乘法生成它? -
我不相信 -ffast-math 有帮助。