我尝试为此清理GCC手册页,但实际上还是不明白。
-march-mtune有什么区别?

什么时候只使用-march,而不是两者?有可能只是-mtune吗?

最佳答案

如果使用-march,则GCC可以自由生成可在指定CPU上运行的指令,但(通常)不能在体系结构系列中的较早CPU上运行。
如果仅使用-mtune,则编译器将生成可在其中任何一个上运行的代码,但会偏爱在指定的特定CPU上运行最快的指令序列。例如适当地为该CPU设置循环展开试探法。
-march=foo表示-mtune=foo,除非您还指定其他-mtune。这就是为什么使用-march而不是仅启用-mavx这样的选项而不做任何调整的原因之一。
注意:GCC无法明确识别的CPU上的-march=native仍将启用GCC可以检测到的新指令集,但会保留-mtune=generic。如果希望它编写良好的代码,请使用一个足够了解您的CPU的新GCC。

关于optimization - GCC:三月与mtune有何不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10559275/

10-12 16:11