ax、Qax

 

パフォーマンス上の利点がある場合、複数のプロセッサー固有の自動ディスパッチ・コードを生成するようにコンパイラーに指示します。

IDE オプション

Windows: [Optimization (最適化)] > [Generate Alternate Code Paths (指定された命令セットの専用及び汎用コード生成)]

Linux: なし

Mac OS X: [Optimization (最適化)] > [Generate Alternate Code Paths (指定された命令セットの専用及び汎用コード生成)]

アーキテクチャー

IA-32、インテル(R) 64 アーキテクチャー

構文

Linux および Mac OS X:

-axprocessor

Windows:

/Qaxprocessor

引数

processor

専用コードを生成する対象のプロセッサーです。次の説明は、インテル(R) ストリーミング SIMD 拡張命令 (インテル(R) SSE) および SSE 補足命令 (インテル(R) SSSE) についてです。設定可能な値は以下のとおりです。

SSE4.2

インテル(R) Core(TM) i7 プロセッサーでサポートされているインテル(R) SSE4 高効率および高速な文字列処理命令を生成します。 インテル(R) プロセッサー向けにインテル(R) SSSE3、SSE3、SSE2、および SSE 命令を生成します。また、インテル(R) Core(TM)2 Duo プロセッサー・ファミリー向けに最適化します。

SSE4.1

SSE4 ベクトル化コンパイラー命令およびメディア・アクセラレーター命令をインテル(R) プロセッサー向けに生成することができます。インテル(R) SSSE3、SSE3、SSE2、SSE 命令を生成します。また、インテル(R) 45nm Hi-k 次世代 インテル(R) Core(TM) マイクロアーキテクチャー・プロセッサー向けに最適化します。これは、古いオプション S の代わりです。

SSSE3

インテル(R) プロセッサー向けにインテル(R) SSSE3、SSE3、SSE2、および SSE 命令を生成します。また、インテル(R) Core(TM)2 Duo プロセッサー・ファミリー向けに最適化します。これは、古いオプション T の代わりです。

SSE3

インテル(R) SSE3、SSE2、および SSE 命令を生成します。また、インテル(R) Core(TM) マイクロアーキテクチャーおよび Intel NetBurst(R) マイクロアーキテクチャーをベースとするインテル(R) プロセッサー向けに最適化します。これは、古いオプション P の代わりです。

SSE2

インテル(R) プロセッサー向けにインテル(R) SSE2 および SSE 命令を生成します。また、インテル(R) Pentium(R) 4 プロセッサー、インテル(R) Pentium(R) M プロセッサー、およびインテル(R) SSE2 をサポートするインテル(R) Xeon(R) プロセッサー向けに最適化します。この値は、Mac OS X システムでは利用できません。これは、古いオプション N の代わりです。

デフォルト

オフ

ディスパッチ・コードは生成されません。プロセッサー固有のコードが生成され、コンパイラー・オプション -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 オプションで指定されたプロセッサーの種類と互換性のあるプロセッサーでのみ実行できる基準コードが生成されます。

このオプションは、指定したインテル(R) プロセッサーの機能を活用できる別の関数バージョンを生成できるかどうか検出するように、コンパイラーに指示します。

固有の関数バージョンを生成できることが判明した場合、コンパイラーはそれがパフォーマンスの向上につながるかどうかをチェックします。パフォーマンスが向上すると判明した場合、コンパイラーはプロセッサー固有のバージョンと基準バージョンの関数を生成します。プログラムの実行時に、使用されているインテル(R) プロセッサーに応じて、この 2 つのバージョンのどちらを実行するかが選択されます。この方法により、プログラムは従来のプロセッサーとの互換性を保ちながら、最新のインテル(R) プロセッサー上でパフォーマンスを大幅に向上できます。

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 は古いオプションです。新しいオプションについては、次のとおりです。

-ax オプションと /Qax オプションは、-m/arch ではされない追加の最適化を有効にします。

代替オプション

なし

関連情報