GCC: CPU に関する最適化オプション

このページでは、GCC における最適化オプションに関する情報をまとめています。 対象としているのは x86 系 CPU, GCC 3.0 系以降です。

目次

  1. 各 CPU 向け最適化オプション
  2. 拡張命令向け最適化オプション
  3. リンク

各 CPU 向け最適化オプション

GCC には以下の 3 つの各 CPU 向け最適化オプションがあります。

-march
指定した CPU だけで動作するようなコードを生成します。後述の -mcpu より速いコードを生成可能。
-mcpu
-march と違い、同系列の CPU でも動作するようなコードを生成します。
-mtune
GCC 3.4 系で導入された -mcpu の別名。

これらは、以下の表にある“CPU タイプ”と組み合わせて、-march=pentium2 の様に使います。

CPU タイプ説明対応している GCC
i386Intel i386 とその互換 CPU----
i486Intel i486 とその互換 CPU----
i586, pentiumIntel Pentium とその互換 CPU----
i686, pentiumproIntel Pentium Pro とその互換 CPU----
pentium-mmxIntel Pentium MMX とその互換 CPU3.1 系以降
pentium2Intel Pentium II (Covington, Mendocino) とその互換 CPU3.1 系以降
pentium3Intel Pentium III (Coppermine, Tualatin) とその互換 CPU3.1 系以降
pentium3mIntel Pentium III (低電圧版?) とその互換 CPU3.4 系以降
pentium-mIntel Pentium M とその互換 CPU3.4 系以降
pentium4Intel Pentium 4 (Willamette, Northwood) とその互換 CPU3.1 系以降
pentium4mIntel Pentium 4 (低電圧版?) とその互換 CPU3.4 系以降
prescottIntel Pentium 4 (Prescott) とその互換 CPU3.3 系以降
noconaIntel Pentium 4 (64-bit 拡張あり) とその互換 CPU3.3 系以降
k6AMD K6 とその互換 CPU----
k6-2AMD K6-2 とその互換 CPU3.1 系以降
k6-3AMD K6-III とその互換 CPU3.1 系以降
athlonAMD Athlon とその互換 CPU3.0 系以降
athlon-tbirdAMD Athlon (Thunderbird) とその互換 CPU3.1 系以降
athlon-4AMD Athlon 4 とその互換 CPU3.1 系以降
athlon-xpAMD Athlon XP とその互換 CPU3.1 系以降
athlon-mpAMD Athlon MP とその互換 CPU3.1 系以降
k8AMD Athlon 64 (K8) とその互換 CPU3.4 系以降
athlon64AMD Athlon 64 とその互換 CPU3.4 系以降
athlon-fxAMD Athlon 64 FX とその互換 CPU3.4 系以降
opteronAMD Opteron とその互換 CPU3.4 系以降
winchip-c6IDT Winchip C6 とその互換 CPU3.3 系以降
winchip2IDT Winchip2 とその互換 CPU3.3 系以降
c3VIA C3 とその互換 CPU3.3 系以降
c3-2VIA C3-2 とその互換 CPU3.4 系以降

でも実は、以下はそれぞれ一緒の効果を狙っているのかもしれません。

拡張命令向け最適化オプション

GCC には以下の拡張命令向け最適化オプションがあります。

オプション説明対応している GCC
-mmmxMMX3.1 系以降
-msseSSE3.1 系以降
-msse2SSE23.1 系以降
-msse3SSE33.3 系以降
-m3dnow3DNow!3.1 系以降

また、内容的に重複するところがありますが、 SSE 命令を使って浮動小数点演算を行わせる -mfpmath=sse も GCC 3.1 系以降から使えます。

リンク

GCC online documentation
http://www.gnu.org/software/gcc/onlinedocs/
index.html