-x (Linux* および Mac OS* X) オプションまたは /Qx (Windows*) オプションでは、IA-32 アーキテクチャーおよびインテル(R) 64 アーキテクチャーをベースにした特定のインテル(R) プロセッサー向けのアプリケーションの最適化を自動で行うことができます。
自動で行う最適化では、それぞれのアーキテクチャーの特長、新しい命令セットやプロセッサー・デザインの新機能を活かすことができます。ただし、作成された最適化コードには、ほかのプロセッサーや以前のプロセッサーではサポートされていない機能が含まれていることがあります。そのため、これらのオプションを使用することで、アプリケーションの最小ハードウェア要件を効率良く設定することができます。
最適化では、インテル(R) ストリーミング SIMD 拡張命令 4 (SSE4)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3)、ストリーミング SIMD 拡張命令 3 (SSE3)、ストリーミング SIMD 拡張命令 2 (SSE2)、またはストリーミング SIMD 拡張命令 (SSE) を生成することができます。
IA-32 アーキテクチャーまたはインテル 64 アーキテクチャーをベースとした複数のプロセッサーでプログラムを実行する場合は、このオプションは使用しないでください。代わりに -ax (Linux および Mac OS X) オプションまたは /Qax (Windows) オプションを使用すると、プロセッサー固有のパフォーマンス・ゲインと、異なるプロセッサー間の移植性の確保の両方を達成することができます。
Linux および Mac OS X |
Windows |
説明 |
---|---|---|
-xS |
/QxS |
SSE4 ベクトル化コンパイラー命令およびメディア・アクセラレーター命令を将来のインテル・プロセッサー向けに生成することができます。また、将来のインテル・プロセッサー向けに SSSE3、SSE3、SSE2、SSE を生成することもできます。 Mac OS X: IA-32 アーキテクチャーでサポートされています。 |
-xT |
/QxT |
SSSE3、SSE3、SSE2、SSE を生成し、次のようなインテル・プロセッサー向けに最適化することができます。
Mac OS X: IA-32 アーキテクチャーとインテル 64 アーキテクチャーでサポートされています。 |
-xP |
/QxP |
SSE3、SSE2、SSE を生成し、次のようなインテル・プロセッサー向けに最適化することができます。
Mac OS X: IA-32 アーキテクチャーとインテル 64 アーキテクチャーでサポートされています。 |
-xO |
/QxO |
SSE3、SSE2、SSE を生成できます。生成されたコードは、SSE3 命令セット、SSE2 命令セット、SSE 命令セットをサポートしているインテル以外のプロセッサーでも動作する可能性があります。 インテル Core マイクロアーキテクチャーまたは Intel NetBurst マイクロアーキテクチャーをベースとしたその他のインテル・プロセッサー向けに最適化できます。 この値は、processor 値が S、T、または P によって有効になる一部の最適化を有効にしません。 |
-xB |
/QxB |
推奨されていないオプション (古いオプション)。インテル・プロセッサーの SSE2 と SSE を生成し、インテル Pentium M プロセッサー向けにコードを最適化できます。 この値を初めて使用する場合は、代わりに N または W の使用を検討してください。 |
-xN |
/QxN |
インテル・プロセッサーの SSE2 と SSE を生成し、インテル Pentium 4 プロセッサーおよび SSE2 対応インテル Xeon プロセッサー向けにコードを最適化できます。 |
-xW |
/QxW |
インテル 64 アーキテクチャーのデフォルト値です。 SSE2 と SSE を生成し、インテル Pentium 4 プロセッサーおよび SSE2 対応インテル Xeon プロセッサー向けにコードを最適化できます。 この値は、processor 値が B または N によって有効になる一部の最適化を有効にしません。 |
-xK |
/QxK |
インテル・プロセッサー向けの SSE を生成し、インテル Pentium III プロセッサーとインテル Pentium III Xeon プロセッサー向けに最適化されたコードを最適化できます。 生成されたコードは、SSE 命令セットをサポートしているインテル以外のプロセッサーでも動作する可能性があります。 |
O、W、K で、インテル・プロセッサーの命令セットや機能がサポートされているインテル以外のプロセッサー上で実行できるバイナリーを生成できます。
実行エラーを防ぐために、正しいプロセッサーが使用されていることをチェックするコードをコンパイラーはメインルーチンに挿入します。このオプションを指定すると、最小プロセッサー・レベルに制限します。例えば、インテル Core マイクロアーキテクチャー・ベースのインテル Xeon プロセッサーで実行されるアプリケーションを対象としている場合、以前のインテル・プロセッサーで正常に動作するアプリケーションが作成されます。コンパイルされた実行ファイルを、ターゲット・プロセッサーを搭載していないシステムで実行すると、アプリケーションは不正な命令例外により失敗するか、または予想外の動作が発生することがあります。
複数の processor 値をターゲットにすると、コンパイラーにより利点があると判断された場合に最も性能の高いプロセッサー向けにコードが生成されます。性能の高い processor 値から順に以下に示します。
S
T
P
O
B
N
W
K
サポートされていないプロセッサーで、processor 値 S、T、P、B、または N でコンパイルされたプログラムを実行すると、ランタイムエラーが表示されます。例えば、processor 値に T を指定してアプリケーションをコンパイルし、インテル Pentium 4 プロセッサーでアプリケーションを実行すると、次のようなエラーメッセージが表示されます。
ランタイムエラー |
---|
重大なエラー: このプログラムは現在のシステムのプロセッサーで実行するようにビルドされていません。 許可されているプロセッサーはインテル Core Duo プロセッサーおよび SSE3 補足命令 (Supplemental Streaming SIMD Extensions 3) に対応した互換性のあるインテル・プロセッサーです。 |
次の例は、インテル Core 2 Duo プロセッサーと互換性のあるプロセッサー向けにアプリケーションをコンパイルする方法を示します。生成されるバイナリーは以前のプロセッサーまたはインテル製以外の IA-32 プロセッサーでは正しく実行されないことがあります。
プラットフォーム |
例 |
---|---|
Linux および Mac OS X |
icpc -xT sample.cpp |
Windows |
icl /QxT sample.cpp |
アーキテクチャーのサポートに関する情報は、次のコンパイラー・オプションを参照してください。
-x コンパイラー・オプション