パフォーマンス上の利点がある場合、複数のプロセッサー固有の自動ディスパッチ・コードを生成するようにコンパイラーに指示します。
Windows: [Optimization (最適化)] > [Generate Alternate Code Paths (指定された命令セットの専用及び汎用コード生成)]
Linux: [Optimization (最適化)] > [Generate Alternate Code Paths (指定された命令セットの専用及び汎用コード生成)]
Mac OS X: [Optimization (最適化)] > [Generate Alternate Code Paths (指定された命令セットの専用及び汎用コード生成)]
IA-32 アーキテクチャーおよびインテル® 64 アーキテクチャー
Linux および Mac OS X: |
-axprocessor |
Windows: |
/Qaxprocessor |
processor |
専用コードを生成する対象のプロセッサーです。次の説明は、インテル® ストリーミング SIMD 拡張命令 (インテル® SSE) および SSE 補足命令 (インテル® SSSE) についてです。設定可能な値は以下のとおりです。
|
オフ |
ディスパッチ・コードは生成されません。プロセッサー固有のコードが生成され、コンパイラー・オプション -m (Linux)、コンパイラー・オプション /arch (Windows)、またはコンパイラー・オプション -x (Mac OS X) の設定で制御されます。 |
このオプションは、パフォーマンス上の利点がある場合、複数のプロセッサー固有の自動ディスパッチ・コードを生成するようにコンパイラーに指示します。また、基準 IA-32 コードパスも生成します。通常は、基準コードの方が専用コードよりも実行速度は遅くなります。
基準コードパスは、-x オプション (Linux および Mac OS X) または /Qx オプション (Windows) によって決定されます。-x オプションまたは /Qx オプションのデフォルトは使用しているオペレーティング・システムに依存しますが、デフォルトよりも上位または下位のアーキテクチャーを指定することもできます。指定されるアーキテクチャーは、基準コードパス向けの最小アーキテクチャーとなります。
-ax と -x オプション (Linux および Mac OS X) または /Qax と /Qx オプション (Windows) の両方を指定すると、-x または /Qx オプションで指定されたプロセッサーの種類と互換性のあるプロセッサーでのみ実行できる基準コードが生成されます。
このオプションは、指定したインテル® プロセッサーの機能を活用できる別の関数バージョンを生成できるかどうか検出するように、コンパイラーに指示します。
固有の関数バージョンを生成できることが判明した場合、コンパイラーはそれがパフォーマンスの向上につながるかどうかをチェックします。パフォーマンスが向上すると判明した場合、コンパイラーはプロセッサー固有のバージョンと基準バージョンの関数を生成します。プログラムの実行時に、使用されているインテル® プロセッサーに応じて、この 2 つのバージョンのどちらを実行するかが選択されます。この方法により、プログラムは従来のプロセッサーとの互換性を保ちながら、最新のインテル® プロセッサー上でパフォーマンスを大幅に向上できます。
2 つ以上の processor 値を組み合わせて使用できます。例えば、-axSSE4.1,SSSE3 (Linux および Mac OS X) または /QaxSSE4.1,SSSE3 (Windows) のように指定することができます。ただし、以前のスタイル、古いオプション、および新しいオプションを組み合わせることはできません。例えば、-axSSE4.1,T (Linux および Mac OS X) または /QaxSSE4.1,T (Windows) のように指定することはできません。
以前の値である W および K は古いオプションです。新しいオプションについては、次のとおりです。
Mac OS X システム: W または K の完全な後継オプションはありません。デフォルトオプション -msse3 (IA-32 アーキテクチャー) または -mssse3 (インテル® 64 アーキテクチャー) にアップグレードすることができます。
Windows および Linux システム: W の後継オプションは -msse2 (Linux)、/arch:SSE2 (Windows) です。K の完全な後継オプションはありません。しかし、Windows システムで /QaxK は /arch:IA32 と解釈され、Linux では -axK は -mia32 と解釈されます。または、次のいずれかを行います。
-msse2 (Linux) オプション、/arch:SSE2 (Windows) オプションにアップグレードします。これは、インテル® SSE2 専用のコードを 1 つ生成します。以前のプロセッサーでは動作しないコードです。
-mia32 -axSSE2 (Linux)、/arch:IA32 /QaxSSE2 (Windows) のように 2 つのオプションを組み合わせて指定します。IA-32 アーキテクチャー・ベース用とインテル® SSE2 用のこの組み合わせで、あらゆるプロセッサーで実行可能なファイルが生成されます。
-ax オプションと /Qax オプションは、-m、/arch ではされない追加の最適化を有効にします。
なし