x、Qx

 

プログラムを実行するインテル(R) プロセッサー専用の最適化コードを生成するようにコンパイラーに指示します。

IDE オプション

Windows: [Optimization (最適化)] > [Use Intel(R) Processor Extensions (指定された命令セットの専用コード生成)]

Linux: [Optimization (最適化)] > [Use Intel(R) Processor Extensions (指定された命令セットの専用コード生成)]

Mac OS X: [Optimization (最適化)] > [Use Intel(R) Processor Extensions (指定された命令セットの専用コード生成)]

アーキテクチャー

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

構文

Linux および Mac OS X:

-xprocessor

Windows:

/Qxprocessor

引数

processor

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

Host

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

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 の代わりです。

SSE3_ATOM

インテル(R) プロセッサー向けに MOVBE 命令を生成します。また、インテル(R) Atom(TM) プロセッサーとインテル(R) Centrino(R) Atom(TM) プロセッサー・テクノロジー向けに最適化します。

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 の代わりです。

デフォルト

Windows システム: /arch:SSE2
Linux システム: -msse2
IA-32 アーキテクチャー・ベースの Mac OS X システム: SSE3
インテル(R) 64 アーキテクチャー・ベースの Mac OS X システム: SSSE3

デフォルト値の詳細については、m オプション (Linux および Mac OS X)、arch オプション (Windows) を参照してください。

説明

このオプションは、プログラムを実行するインテル(R) プロセッサー専用の最適化コードを生成するようにコンパイラーに指示します。また、インテル(R) プロセッサー固有の最適化に加えて新しい最適化を有効にします。生成されるプロセッサー専用コードは、インテル以外のプロセッサーでは実行できないことがあります。

このオプションは、指定される引数に基づいて最適化を有効にします。例えば、インテル(R) ストリーミング SIMD 拡張命令 4 (インテル(R) SSE4)、インテル(R) ストリーミング SIMD 拡張命令 3 補足命令 (インテル(R) SSSE3)、インテル(R) ストリーミング SIMD 拡張命令 3 (インテル(R) SSE3)、インテル(R) ストリーミング SIMD 拡張命令 2 (インテル(R) SSE2)、またはインテル(R) ストリーミング SIMD 拡張命令 (インテル(R) SSE) を有効にします。

生成されるバイナリーは、対象プロセッサーのすべての機能をサポートしているインテル(R) プロセッサーで実行できます。例えば、SSE3 を使用して生成されるバイナリーは、SSE3 の対象であるインテル(R) Pentium(R) 4 プロセッサーのすべての機能を完全にサポートしているインテル(R) Core(TM)2 Duo プロセッサーでも実行できます。SSE3 を使用すると、インテル(R) Core(TM)2 Duo プロセッサーで利用可能な機能や最適化をより多く活用することができます。

processor 値を使用して、対象プロセッサーと互換性のないプロセッサーで実行するバイナリーを作成しないでください。不正な命令例外によりプログラムが異常終了したり、その他の予期しない動作が発生することがあります。例えば、SSE3 を使用して生成されるバイナリーは、インテル(R) Pentium(R) III プロセッサーまたは SSE2 命令をサポートしていないそれ以前のプロセッサーでは実行できません。

processor 値のいずれかを使用してコンパイルされた メインプログラム は、サポートされていないプロセッサー上で実行するとランタイムエラーが発生します。詳細は、「アプリケーションの最適化」を参照してください。

複数の processor 値を指定すると、指定されたプロセッサーの中で最もパフォーマンスの高いプロセッサー向けにコードが生成されます。processor 値のパフォーマンスの順番は、高いものから順に、SSE4.2、SSE4.1、SSSE3, SSE3、SSE2. です。processor 値 SSE3_ATOM は、これには含まれないことに注意してください。

コンパイラー・オプション march を使用して生成されるバイナリーは、対象となるインテル(R) プロセッサーと同じ機能を実装したインテル以外のプロセッサーでも動作します。

以前の値 O は古いオプションで、-msse3 オプション (Linux および Mac OS X)、/arch:SSE3 オプション (Windows) に置き換わりました。

以前の値である W および K は古いオプションです。新しいオプションについては、次のとおりです。

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

代替オプション

なし

関連情報