x、Qx

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

IDE オプション

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

[Optimization (最適化)] > [Use Intel(R) Processor Extensions (インテル(R) プロセッサー拡張コードの使用)]

Linux: なし

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

アーキテクチャー

IA-32 アーキテクチャーおよびインテル® 64 アーキテクチャー

構文

Linux* および Mac OS* X:

-xcode

Windows:

/Qxcode

引数

code

各説明にある命令セットに対応した命令が生成されます。次の説明の多くは、インテル® ストリーミング SIMD 拡張命令 (インテル® SSE) および SSE 補足命令 (SSSE) についてです。設定可能な値は以下のとおりです。

CORE-AVX2

インテル® プロセッサー向けのインテル® アドバンスト・ベクトル・エクステンション 2 (インテル® AVX2)、インテル® AVX、SSE4.2、SSE4.1、SSSE3、SSE3、SSE2、SSE 命令を生成します。将来のインテル® プロセッサー向けに最適化します。

CORE-AVX-I

インテル® プロセッサー向けのインテル® アドバンスト・ベクトル・エクステンション (インテル® AVX)、32nm よりも小さなプロセス・テクノロジーのインテル® Core™2 プロセッサーの命令、SSE4.2、SSE4.1、SSSE3、SSE3、SSE2、SSE 命令を生成します。 将来のインテル® プロセッサー向けに最適化します。

AVX

インテル® プロセッサー向けのインテル® アドバンスト・ベクトル・エクステンション (インテル® AVX)、SSE4.2、SSE4.1、SSSE3、SSE3、SSE2、SSE 命令を生成します。 将来のインテル® プロセッサー向けに最適化します。

SSE4.2

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

SSE4.1

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

SSE3_ATOM

これは古いオプション (非推奨) です。SSSE3_ATOM を指定した場合と同じです。

SSSE3_ATOM

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

SSSE3

インテル® プロセッサー向けの SSSE3 命令およびインテル® SSE3、SSE2、SSE 命令を生成します。インテル® Core™ マイクロアーキテクチャー向けに最適化します。Mac OS* X システムでは、このオプションはインテル® 64 アーキテクチャーでのみ利用できます。このオプションは、古いオプション T の代わりに使用します。

SSE3

インテル® プロセッサー向けのインテル® SSE3、SSE2、SSE 命令を生成します。SSE3 対応のインテル® Pentium® M プロセッサーと Intel NetBurst® マイクロアーキテクチャー向けに最適化します。 Mac OS* X システムでは、このオプションは IA32 アーキテクチャーでのみ利用できます。このオプションは、古いオプション P の代わりに使用します。

SSE2

インテル® プロセッサー向けのインテル® SSE2、SSE 命令を生成します。Intel NetBurst® マイクロアーキテクチャー向けに最適化します。この値は、Mac OS* X システムでは利用できません。これは、古いオプション N の代わりです。

Host を指定することもできます。 詳細は、-xHost オプション (Linux* OS および Mac OS* X) または /QxHost オプション (Windows* OS) を参照してください。

デフォルト

Windows* OS システム: なし
Linux* OS システム: なし
IA-32 アーキテクチャー・ベースの Mac OS* X システム: SSE3
インテル® 64 アーキテクチャー・ベースの Mac OS* X システム: SSSE3

Windows* OS システムでは、/Qx/arch のどちらも指定されない場合、デフォルトは /arch:SSE2 です。

Linux* OS システムでは、-x-m のどちらも指定されていない場合、デフォルトは -msse2 です。

説明

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

これらのプロセッサー固有のオプションにより生成された実行ファイルは、指定されたインテル® プロセッサーに固有の最適化を組み込み、特定のバージョンのインテル® ストリーミング SIMD 拡張 (インテル® SSE) 命令セットを使用するため、指定されたプロセッサー以降のプロセッサーでのみ動作します。

これらの code 値で生成されるバイナリーは、対象プロセッサーのすべての機能をサポートしているインテル® プロセッサーで実行できます。

code 値を使用して、対象プロセッサーと互換性のないプロセッサーで実行するバイナリーを作成しないでください。不正な命令例外によりプログラムが異常終了したり、その他の予期しない動作が発生することがあります。

code 値のいずれかを使用してコンパイルされたメインプログラムは、インテル以外のプロセッサーを含むサポートされていないプロセッサー上で実行するとランタイムエラーが発生します。

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

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

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

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

Windows* OS システムでは、/Qx オプションと /arch オプションは互いに排他的であり、同時に両方を指定することはできません。両方を指定すると、コンパイラーは後に指定されたオプションを使用し、警告を発行します。 同様に、Linux* OS および Mac OS* X システムでは、-x オプションと -m オプションは互いに排他的であり、同時に両方を指定することはできません。 両方を指定すると、コンパイラーは後に指定されたオプションを使用し、警告を発行します。

最適化に関する注意事項

インテル® コンパイラー、関連ライブラリーおよび関連開発ツールには、インテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能な命令セット (SIMD 命令セットなど) 向けの最適化オプションが含まれているか、あるいはオプションを利用している可能性がありますが、両者では結果が異なります。また、インテル® コンパイラー用の特定のコンパイラー・オプション (インテル® マイクロアーキテクチャーに非固有のオプションを含む) は、インテル製マイクロプロセッサー向けに予約されています。これらのコンパイラー・オプションと関連する命令セットおよび特定のマイクロプロセッサーの詳細は、『インテル® コンパイラー・ユーザー・リファレンス・ガイド』の「コンパイラー・オプション」を参照してください。インテル® コンパイラー製品のライブラリー・ルーチンの多くは、互換マイクロプロセッサーよりもインテル製マイクロプロセッサーでより高度に最適化されます。インテル® コンパイラー製品のコンパイラーとライブラリーは、選択されたオプション、コード、およびその他の要因に基づいてインテル製マイクロプロセッサーおよび互換マイクロプロセッサー向けに最適化されますが、インテル製マイクロプロセッサーにおいてより優れたパフォーマンスが得られる傾向にあります。

インテル® コンパイラー、関連ライブラリーおよび関連開発ツールは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。

インテルでは、インテル® コンパイラーおよびライブラリーがインテル製マイクロプロセッサーおよび互換マイクロプロセッサーにおいて、優れたパフォーマンスを引き出すのに役立つ選択肢であると信じておりますが、お客様の要件に最適なコンパイラーを選択いただくよう、他のコンパイラーの評価を行うことを推奨しています。インテルでは、あらゆるコンパイラーやライブラリーで優れたパフォーマンスが引き出され、お客様のビジネスの成功のお役に立ちたいと願っております。お気づきの点がございましたら、お知らせください。

改訂 #20110307

代替オプション

なし

関連情報


このヘルプトピックについてのフィードバックを送信

© 1996-2011 Intel Corporation. 無断での引用、転載を禁じます。