ax、Qax

 

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

IDE オプション

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) についてです。設定可能な値は以下のとおりです。

SSE4.2

インテル® Core™ i7 プロセッサーでサポートされているインテル® SSE4 高効率および高速な文字列処理命令を生成します。 インテル® SSE4 ベクトル化コンパイラー命令およびメディア・アクセラレーター命令、インテル® SSSE3、SSE3、SSE2、SSE 命令を生成します。また、インテル® Core™ プロセッサー・ファミリー向けに最適化します。

SSE4.1

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

SSSE3

インテル® プロセッサー向けにインテル® SSSE3、SSE3、SSE2、および SSE 命令を生成します。また、インテル® Core™2 Duo プロセッサー・ファミリー向けに最適化します。Mac OS X システムでは、このオプションはインテル® 64 アーキテクチャーでのみ利用できます。 このオプションは、古いオプション T の代わりに使用します。

SSE3

インテル® プロセッサー向けにインテル® SSE3、SSE2、および SSE 命令を生成します。また、インテル® Core™ マイクロアーキテクチャーおよび Intel NetBurst® マイクロアーキテクチャーをベースとするインテル® プロセッサー向けに最適化します。Mac OS X システムでは、このオプションは IA32 アーキテクチャーでのみ利用できます。 このオプションは、古いオプション P の代わりに使用します。

SSE2

インテル® プロセッサー向けにインテル® SSE2 および SSE 命令を生成します。また、インテル® Pentium® 4 プロセッサー、インテル® Pentium® M プロセッサー、およびインテル® SSE2 対応インテル® Xeon® プロセッサー向けに最適化します。この値は、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 オプションで指定されたプロセッサーの種類と互換性のあるプロセッサーでのみ実行できる基準コードが生成されます。

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

固有の関数バージョンを生成できることが判明した場合、コンパイラーはそれがパフォーマンスの向上につながるかどうかをチェックします。パフォーマンスが向上すると判明した場合、コンパイラーはプロセッサー固有のバージョンと基準バージョンの関数を生成します。プログラムの実行時に、使用されているインテル® プロセッサーに応じて、この 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 は古いオプションです。新しいオプションについては、次のとおりです。

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

代替オプション

なし

関連情報