【发布时间】:2011-03-02 05:07:48
【问题描述】:
Gentoo Wiki 告诉我以下内容:
警告:GCC 4.2 及更高版本支持 -三月=本地。 -march=native 应用超出 -march 的附加设置, 特定于您的 CPU。除非你有 不这样做的具体原因(例如 distcc 交叉编译),你可能应该 使用 -march=native,而不是 下面列出的任何内容。
这些附加设置是什么?
【问题讨论】:
Gentoo Wiki 告诉我以下内容:
警告:GCC 4.2 及更高版本支持 -三月=本地。 -march=native 应用超出 -march 的附加设置, 特定于您的 CPU。除非你有 不这样做的具体原因(例如 distcc 交叉编译),你可能应该 使用 -march=native,而不是 下面列出的任何内容。
这些附加设置是什么?
【问题讨论】:
没关系。
$ cc -march=core2 -E -v - </dev/null 2>&1 | grep cc1
/[...]/cc1 -E -quiet -v -iprefix /[...]/4.3.2/ - -march=core2
$ cc -march=native -E -v - </dev/null 2>&1 | grep cc1
/[...]/cc1 -E -quiet -v -iprefix /[...]/4.3.2/ - -march=core2 -mcx16 -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 -mtune=core2
我开始非常喜欢这个选项。 -mcx16 和 -msahf 是 gcc 现在可以使用的两个额外的 CPU 指令,这在早期的 Core2 中是不可用的。
【讨论】:
-mpopcnt -msse4.2 --param l2-cache-size=8192,其中 POPCNT 是一条相当简洁的 CPU 指令。