gcc -march=nativeが生成する最適化オプション
gcc 4.2以降、-march=nativeのオプションを与えると、CPUに合わせた最適化オプションが得られるようになった(IA-32/x86-64のみ)が、複数種のCPUが混在しているdistcc環境では利用できない。
なので、-march=nativeが生成している最適化オプションを調べてみた。手抜きスクリプトはこんな感じ。
#!/bin/sh CC="gcc" OPT="-march=native" NATIVE=$(echo | ${CC} -E -v ${OPT} - 2>&1 | grep cc1) NOARCH=$(echo | ${CC} -E -v - 2>&1 | grep cc1) for native in ${NATIVE} ; do FOUND=0 for noarch in ${NOARCH} ; do if [ "${native}" = "${noarch}" -a "${native}" != "${OPT}" ] ; then FOUND=1 break fi done if [ ${FOUND} -eq 0 ] ; then echo -n "${native} " fi done echo
- x86_64 Intel(R) Core(TM)2 Duo CPU L7300 @ 1.40GHz GenuineIntel
- -march=core2 -mcx16 -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 -mtune=core2
N270だと-mtuneは出力されないのね。理由は不明。