我想使用FMA内部指令_mm256_fmadd_pd(a,b,c),但是我的代码必须在启用或不启用FMA的不同计算机上运行。我不能使用编译时标志。所以我希望能够写这样的东西:
__m256d a, b, c, x;
bool FMA_Enabled = CheckFMA();
if (FMA_Enabled)
{
d = _mm256_fmadd_pd(a, b, c);
}
else
{
x = _mm256_mul_pd(a, b);
d = _mm256_add_pd(x, c);
}
我找不到写函数CheckFMA()的方法。有办法吗?
非常感谢
编辑:我的操作系统是Windows 10 64位。
哪个操作系统?运行Linux,您可以检查/proc/cpuinfo
,例如fma标志