x、Qx

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

IDE オプション

Windows: [Optimization (最適化)] > [Require Intel(R) Processor Extensions (インテル(R) プロセッサー拡張コードの要求)]

Linux: [Code Generation (コード生成)] > [Require Intel(R) Processor Extensions (インテル(R) プロセッサー拡張コードの要求)]

Mac OS: [Optimization (最適化)] > [Require Intel(R) IA-32 Instruction Set Extensions (インテル(R) IA-32 命令セット拡張の要求)]

アーキテクチャー

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

構文

Linux* および Mac OS*: -xprocessor
Windows*:  /Qxprocessor

引数

processor 特定のプロセッサーまたはマイクロアーキテクチャー用の値です。設定可能な値は以下のとおりです。
  S 将来のインテル(R) プロセッサーでサポートされる、SSE4 のベクトル化コンパイラー命令およびメディア・アクセラレーター命令を生成します。また、SSSE3、SSE3、SSE2、および SSE 命令も生成します。将来のインテル・プロセッサー向けに最適化します。
  T インテル・プロセッサー向けに SSSE3、SSE3、SSE2、および SSE 命令を生成します。また、インテル(R) Core(TM)2 Duo プロセッサー・ファミリー向けに最適化します。
  P インテル・プロセッサー向けに SSE3、SSE2、および SSE 命令を生成します。また、インテル Core マイクロアーキテクチャーおよび Intel NetBurst(R) マイクロアーキテクチャーをベースとするインテル Core Duo プロセッサー、SSE3 をサポートするインテル(R) Pentium(R) 4 プロセッサー、SSE3 をサポートするインテル(R) Xeon(R) プロセッサー向けに最適化します。
  O SSE3、SSE2、および SSE 命令を生成します。また、インテル Core マイクロアーキテクチャーおよび Intel NetBurst マイクロアーキテクチャーをベースとするインテル・プロセッサー向けに最適化します。
生成されるコードは、SSE3、SSE2、および SSE 命令セットに対応したインテル以外のプロセッサーでも動作することがあります。
この値は、processor 値が ST、および P の場合に有効となる一部の最適化を有効にしません。
他のプロセッサーでの使用に関する詳細は、説明を参照してください。
  B 古いオプション (非推奨) です。インテル・プロセッサー向けに SSE2 および SSE 命令を生成します。また、インテル Pentium M プロセッサー向けに最適化します。
  N インテル・プロセッサー向けに SSE2 および SSE 命令を生成します。また、インテル Pentium 4 プロセッサーおよび SSE2 をサポートするインテル Xeon プロセッサー向けに最適化します。
  W SSE2 および SSE 命令を生成します。また、インテル Pentium 4 プロセッサーおよび SSE2 をサポートするインテル Xeon プロセッサー向けに最適化します。
生成されるコードは、SSE2 命令セットに対応したインテル以外のプロセッサーでも動作することがあります。
この値は、processor 値が B および N の場合に有効となる一部の最適化を有効にしません。
他のプロセッサーでの使用に関する詳細は、説明を参照してください。
  K SSE 命令を生成します。また、インテル Pentium III プロセッサーおよびインテル Pentium III Xeon プロセッサー向けに最適化します。生成されるコードは、SSE 命令セットに対応したインテル以外のプロセッサーでも動作することがあります。
他のプロセッサーでの使用に関する詳細は、説明を参照してください。

デフォルト

IA-32 アーキテクチャー・ベースの Windows および Linux システム: オフ
インテル 64 アーキテクチャー・ベースの Windows および Linux システム: -xW
IA-32 アーキテクチャー・ベースの Mac OS システム: -xP
インテル 64 アーキテクチャー・ベースの Mac OS システム: -xT
IA-32 アーキテクチャー・ベースの Windows および Linux システムでは、コンパイラーはプロセッサー専用の最適化コードを生成しません。
他のオペレーティング・システムまたはアーキテクチャーのデフォルト値に関する詳細は、引数を参照してください。

説明

プログラムを実行するプロセッサー専用の最適化コードを生成するようにコンパイラーに指示します。生成されるプロセッサー専用コードは、インテル以外のプロセッサーでは実行できないことがあります。

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

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

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

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

複数の processor 値を指定すると、指定されたプロセッサーの中で最もパフォーマンスの高いプロセッサー向けにコードが生成されます。processor 値のパフォーマンスの順番は、高いものから順に、S、T、P、O、B、N、W、K です。

processorO、W、および K を使用して生成されるバイナリーは、対象となるインテル・プロセッサーと同じ機能を実装したインテル以外のプロセッサーでも動作します。

IA-64 アーキテクチャー・ベースの Linux および Windows システムでは、processorB、N、および K は無効です。

IA-32 アーキテクチャー・ベースの Mac OS システムでは、processorS、T、および P は有効です。これらのシステムでは、P がデフォルトで常に設定されます。インテル 64 アーキテクチャー・ベースの Mac OS システムでは、processorS および T のみ有効です。これらのシステムでは、T がデフォルトで常に設定されます。

代替オプション

-xK Linux : -march=pentium3
Mac OS: なし
Windows: なし
-xW Linux : -march=pentium4
Mac OS: なし
Windows: なし

関連情報

ax、Qax コンパイラー・オプション