GCC:mtune vs march vs mcpu

v64noz0r  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(160)

我试图在几个ARM SBC上进行一些优化构建,每个构建只在我构建的目标平台上具有兼容性。
我听说-march在这里比-mtune更好,因为它会通过生成只与主机cpu兼容的指令来破坏与架构家族中其他cpu的向后兼容性。-mtune另一方面将保持这种兼容性。
然而,我读到过-mcpu可能是最好的标志,而不是-march或-mtune,因为-mcpu是特定于特定的处理器的,而不仅仅是更常见的架构指定的-marm(一个类似-mcpu=cortex-a8和-march=armv7-a的区别)。
现在棘手的事情是,我还阅读到-mcpu已被弃用,其功能由-mtune接管,这与我之前的评论相冲突,即与-march相比,-mtune的使用不可取,与-mcpu相比,-marm的使用不可取。
本质上,当我根本不关心维护与其他cpu的兼容性时,哪个标志将为主机给予最佳性能。

2ledvvac

2ledvvac1#

不幸的是,-mcpu对不同的目标有不同的语义。它不适用于x86(是-mtune的同义词),但不适用于ARM,它是-march-mtune的总和。
所以回答你的问题-在ARM上,总是使用-mcpu以获得最佳性能,除非你关心向后兼容性。

相关问题