-march=x86-64-v3
Haswell-level-level-level基线
。 您可以在模拟器或VM中遇到此功能组合,该功能掩盖了一些CPUID位。 这是可能的,但不太可能,如果对特征位做出假设,则这种虚拟机可能无法正确运行所有软件。 或者,某些未来的CPU可能会在其F16C指令中有一个错误,并且微型模块更新会禁用这些错误,但不能禁用AVX2。 (这似乎不是很合理,因为它们只是简单的硬件执行单元,这些单元并不特别或棘手。)因此,您不应该在有和没有F16C的情况下手动对单独的AVX2版本进行矢量矢量化。 如果某人在其VM中禁用F16C,那么您的程序才能归还您的SSE2或SSE4版本或您所拥有的任何版本不是AVX2是非常合理的。 如果您不进行运行时CPU检测,并且想知道是否使用
-march=x86-64-v3
构建并使用半精度的浮点在使用AVX2的程序中保存内存带宽,则是的。 Via的第一个AVX2 CPU缺乏FMA,但它仅在嵌入式系统中发现,并且此时非常旧。