在其他编译器中等同于gcc / clang的march = native?

时间:2015-06-12 09:55:40

标签: cmake cross-platform compiler-optimization intrinsics

我想知道是否有其他编译器而不是gcc和clang提供类似-march=native选项的内容,如果有,那么该选项是什么。我已经从另一个问题(Automatically building for best available platform in visual c++ (equivalent to gcc's -march=native))了解到微软的编译器没有这个选项(除非它在激活SSE2指令集的选项中隐含,直到和不包括AVX和更高版本至少)。

用例很简单:提供一个cmake设置,因此用户可以选择激活和构建支持所有"内在函数"他或她的CPU支持。我们目前有针对我们目标的实际内在函数的检测逻辑(例如x86上的SSE4.2和/或PCLMUL),但是当需要考虑更多平台和编译器时,逻辑可能会变得非常复杂。简化它们可能会导致编译器开始在受运行时检查保护的预期位置之外使用不受支持的指令集。

1 个答案:

答案 0 :(得分:3)

目前,Microsoft Visual C ++编译器并未向 march = native 提供等效标记。在构建代码之前,您必须手动或使用脚本找出适当的标志。

关于英特尔C ++编译器,xHost and QxHost标志具有基本相同的目的。