自動で IA-32 およびインテル® 64 アーキテクチャー・プロセッサーを対象にする

-x (Linux* および Mac OS* X) オプションまたは /Qx (Windows*) オプションでは、IA-32 アーキテクチャーおよびインテル® 64 アーキテクチャーをベースにした特定のインテル® プロセッサー向けのアプリケーションの最適化を自動で行うことができます。

自動で行う最適化では、それぞれのアーキテクチャーの特長、新しい命令セットやプロセッサー・デザインの新機能を活かすことができます。ただし、作成された最適化コードには、ほかのプロセッサーや以前のプロセッサーではサポートされていない機能が含まれていることがあります。そのため、これらのオプションを使用することで、アプリケーションの最小ハードウェア要件を効率良く設定することができます。

最適化では、インテル® ストリーミング 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

説明

-xHost

/QxHost

コンパイルを行うホスト・プロセッサーで利用可能な最上位の命令セット向けのコードを生成します。

-xAVX

/QxAVX

インテル® Advanced Vector Extensions (インテル® AVX) をサポートするインテル® プロセッサー向けに最適化します。

-xSSE4.1

/QxSSE4.1

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

-xSSE4.2

/QxSSE4.2

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

-xSSSE3

/QxSSSE3

インテル® プロセッサー向けにインテル® SSSE3、SSE3、SSE2、および SSE 命令を生成します。また、インテル® Core™2 Duo プロセッサー・ファミリー向けに最適化します。このオプションは、推奨されていない値 T の代わりに使用します。

-xSSE3_ATOM

/QxSSE3_ATOM

インテル® Atom™ プロセッサーとインテル® Centrino® Atom™ プロセッサー・テクノロジー向けに最適化します。-minstruction オプション (Linux および Mac OS) または /Qinstruction オプション (Windows) の設定に応じて、MOVBE 命令を生成します。

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

-xSSE3

/QxSSE3

インテル® プロセッサー向けにインテル® SSE3、SSE2、および SSE 命令を生成します。また、インテル® Core™ マイクロアーキテクチャーおよび Intel NetBurst® マイクロアーキテクチャーをベースとするインテル® プロセッサー向けに最適化します。このオプションは、推奨されていない値 P の代わりに使用します。

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

-xSSE2

/QxSSE2

インテル® プロセッサー向けにインテル® SSE2 および SSE 命令を生成します。また、インテル® Pentium® 4 プロセッサー、インテル® Pentium® M プロセッサー、およびインテル® SSE2 対応インテル® Xeon® プロセッサー向けに最適化します。

Mac OS X: サポートされていません。

コンパイラー・オプション -m と /arch の特定のキーワードを使用して生成されるバイナリーは、対象となるインテル® プロセッサーと同じ機能を実装したインテル以外のプロセッサーでも動作します。詳細は、「コンパイラー・オプション」を参照してください。

プログラム実行中の不正な命令や、同様の予期しない実行エラーを防ぐために、コンパイラーは正しいプロセッサーが使用されていることをチェックするコードをメインルーチンに挿入します。このオプションを指定すると、最小プロセッサー・レベルに制限します。例えば、インテル® Core™ マイクロアーキテクチャー・ベースのインテル® Xeon® プロセッサーで実行されるアプリケーションを対象にすると、それ以前のインテル® プロセッサーでは正常に動作しないでしょう。

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

  1. SSE4.1

  2. SSSE3

  3. SSE3

  4. SSE2



サポートされていないプロセッサーで、processor 値 SSE4.1、SSSE3、SSE3、または SSE2 でコンパイルされたプログラムを実行すると、ランタイムエラーが表示されます。例えば、processor 値に SSSE3 を指定してアプリケーションをコンパイルし、インテル® Pentium® 4 プロセッサーでアプリケーションを実行すると、次のようなエラーメッセージが表示されます。

ランタイムエラー

致命的なエラー: このプログラムは現在のシステムのプロセッサーで実行するようにビルドされていません。

許可されているプロセッサーは、インテル® Core™ Duo プロセッサーおよびストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) に対応した互換性のあるインテル® プロセッサーです。

次の例は、インテル® Core™2 Duo プロセッサーと互換性のあるプロセッサー向けにアプリケーションをコンパイルする方法を示します。生成されるバイナリーは以前のプロセッサーまたはインテル製以外の IA-32 プロセッサーでは正しく実行されないことがあります。

オペレーティング・システム

Linux および Mac OS X

ifort -xSSSE3 sample.f90

Windows

ifort /QxSSSE3 sample.f90