自動で IA-32 アーキテクチャー・ベースのプロセッサーを対象にする

-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 を生成し、次のようなインテル・プロセッサー向けに最適化することができます。

  • インテル(R) Core(TM)2 Quad プロセッサー

  • クアッドコア インテル(R) Xeon(R) プロセッサー

  • インテル Core マイクロアーキテクチャーをベースとしたインテル Xeon プロセッサー

  • インテル Core 2 Duo プロセッサー

  • インテル Core 2 Extreme プロセッサー

  • その他のインテル Core マイクロアーキテクチャーをベースとしたインテル Xeon プロセッサー

Mac OS X: IA-32 アーキテクチャーとインテル 64 アーキテクチャーでサポートされています。

-xP

/QxP

SSE3、SSE2、SSE を生成し、次のようなインテル・プロセッサー向けに最適化することができます。

  • インテル Core Duo プロセッサー

  • インテル Core Solo プロセッサー

  • インテル(R) Pentium(R) D プロセッサー

  • SSE3 対応インテル Pentium 4 プロセッサー

  • インテル(R) Celeron(R) M プロセッサー

  • インテル Celeron D プロセッサー

  • SSE3 対応インテル Xeon プロセッサー

  • インテル Core マイクロアーキテクチャーまたは Intel NetBurst マイクロアーキテクチャーをベースとしたその他のインテル・プロセッサー向けに最適化できます。

Mac OS X: IA-32 アーキテクチャーとインテル 64 アーキテクチャーでサポートされています。

-xO

/QxO

SSE3、SSE2、SSE を生成できます。生成されたコードは、SSE3 命令セット、SSE2 命令セット、SSE 命令セットをサポートしているインテル以外のプロセッサーでも動作する可能性があります。

インテル Core マイクロアーキテクチャーまたは Intel NetBurst マイクロアーキテクチャーをベースとしたその他のインテル・プロセッサー向けに最適化できます。

この値は、processor 値が ST、または 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 命令セットをサポートしているインテル以外のプロセッサーでも動作する可能性があります。

OWK で、インテル・プロセッサーの命令セットや機能がサポートされているインテル以外のプロセッサー上で実行できるバイナリーを生成できます。

実行エラーを防ぐために、正しいプロセッサーが使用されていることをチェックするコードをコンパイラーはメインルーチンに挿入します。このオプションを指定すると、最小プロセッサー・レベルに制限します。例えば、インテル Core マイクロアーキテクチャー・ベースのインテル Xeon プロセッサーで実行されるアプリケーションを対象としている場合、以前のインテル・プロセッサーで正常に動作するアプリケーションが作成されます。コンパイルされた実行ファイルを、ターゲット・プロセッサーを搭載していないシステムで実行すると、アプリケーションは不正な命令例外により失敗するか、または予想外の動作が発生することがあります。

複数の processor 値をターゲットにすると、コンパイラーにより利点があると判断された場合に最も性能の高いプロセッサー向けにコードが生成されます。性能の高い processor 値から順に以下に示します。

  1. S

  2. T

  3. P

  4. O

  5. B

  6. N

  7. W

  8. K

サポートされていないプロセッサーで、processor 値 STPB、または 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

アーキテクチャーのサポートに関する情報は、次のコンパイラー・オプションを参照してください。