インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

x、Qx

生成する命令セットと最適化を含む、ターゲット・プロセッサー機能をコンパイラーに指示します。

アーキテクチャーの制限

インテル® グラフィックス・テクノロジーをターゲットとするインテル® 64 アーキテクチャー、または IA-32 アーキテクチャーで実行するインテル® グラフィックス・テクノロジーをターゲットとする場合は利用できません。

構文

Linux* および macOS*:

-xcode

Windows*:

/Qxcode

引数

code

生成する命令セットと最適化を含む、ターゲット機能セットをコンパイラーに指示します。次の説明の多くは、インテル® ストリーミング SIMD 拡張命令 (インテル® SSE) およびインテル® ストリーミング SIMD 拡張命令補足命令 (インテル® SSSE) についてです。設定可能な値は以下のとおりです。

KNM

MIC-AVX512 で有効になる QFMA (Quad Fused Multiply Add) 命令と QVNNI (Quad Virtual Neural Network Instruction) 命令を生成します。インテル® Xeon Phi™ プロセッサー (開発コード名 Knights Mill) 向けに最適化します。

このキーワードは、Windows* および Linux* でのみ利用できます。

COMMON-AVX512

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) の基本命令、競合検出命令、および CORE-AVX2 で有効になる命令を生成します。インテル® AVX-512 命令セット対応のインテル® プロセッサー向けに最適化します。

MIC-AVX512

インテル® プロセッサー向けのインテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) の基本命令、競合検出命令、指数および逆数命令、プリフェッチ命令、および CORE-AVX2 で有効になる命令を生成します。インテル® AVX-512 命令セット対応のインテル® プロセッサー向けに最適化します。

このキーワードは、Linux* および Windows* でのみ利用できます。

CORE-AVX512

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) の基本命令、競合検出命令、ダブルワードおよびクワッドワード命令、バイトおよびワード命令、ベクトル長の拡張、および CORE-AVX2 で有効になる命令を生成します。インテル® AVX-512 命令セット対応のインテル® プロセッサー向けに最適化します。

CORE-AVX2

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

CORE-AVX-I

インテル® プロセッサー向けの Float-16 変換命令および RDRND 命令、インテル® AVX、インテル® SSE4.2、インテル® SSE4.1、インテル® SSSE3、インテル® SSE3、インテル® SSE2、インテル® SSE 命令を生成します。Float-16 変換命令および RDRND 命令対応のインテル® プロセッサー向けに最適化します。

AVX

インテル® プロセッサー向けのインテル® AVX、インテル® SSE4.2、インテル® SSE4.1、インテル® SSSE3、インテル® SSE3、インテル® SSE2、インテル® SSE 命令を生成します。インテル® AVX 命令セット対応のインテル® プロセッサー向けに最適化します。

SSE4.2

インテル® プロセッサー向けのインテル® SSE4 高効率および高速な文字列処理命令、インテル® SSE4 ベクトル化コンパイラー命令およびメディア・アクセラレーター命令、およびインテル® SSSE3、インテル® SSE3、インテル® SSE2、インテル® SSE 命令を生成します。インテル® SSE4.2 命令セット対応のインテル® プロセッサー向けに最適化します。

SSE4.1

インテル® プロセッサー向けのインテル® SSE4 ベクトル化コンパイラー命令およびメディア・アクセラレーター命令を生成します。インテル® SSE4.1 命令セット対応のインテル® プロセッサー向けのインテル® SSE4.1、インテル® SSSE3、インテル® SSE3、インテル® SSE2、インテル® SSE 命令も生成します。

ATOM_SSE4.2

-minstruction オプション (Linux* および macOS*) または /Qinstruction オプション (Windows*) の設定に応じて、インテル® プロセッサー向けに MOVBE 命令を生成します。インテル® プロセッサー向けのインテル® SSE4.2、インテル® SSE3、インテル® SSE2、インテル® SSE 命令も生成します。インテル® SSE4.2 命令セットと MOVBE 命令対応の Intel Atom® プロセッサー向けに最適化します。

このキーワードは、Linux* および Windows* でのみ利用できます。

ATOM_SSSE3

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

このキーワードは、Linux* および Windows* でのみ利用できます。

SSE3_ATOM および SSSE3_ATOM

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

SSSE3

インテル® プロセッサー向けのインテル® SSSE3、インテル® SSE3、インテル® SSE2、インテル® SSE 命令を生成します。インテル® SSSE3 命令セット対応のインテル® プロセッサー向けに最適化します。macOS* システムでは、この値はインテル® 64 アーキテクチャーでのみ利用できます。これは、古いオプション T の後継オプションです。

SSE3

インテル® プロセッサー向けのインテル® SSE3、インテル® SSE2、インテル® SSE 命令を生成します。インテル® SSE3 命令セット対応のインテル® プロセッサー向けに最適化します。macOS* システムでは、この値は IA-32 アーキテクチャーでのみ利用できます。

SSE2

インテル® プロセッサー向けのインテル® SSE2 およびインテル® SSE 命令を生成します。インテル® SSE2 命令セット対応のインテル® プロセッサー向けに最適化します。この値は、macOS* システムでは利用できません。

Host を指定することもできます。詳細は、[Q]xHost オプションを参照してください。

デフォルト

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

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

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

説明

このオプションは、生成する命令セットと最適化を含む、ターゲット・プロセッサー機能をコンパイラーに指示します。また、インテルの機能固有の最適化に加えて新しい最適化を有効にします。

生成されるプロセッサー専用コードは、インテル以外のプロセッサーでは実行できないことがあります。

これらの code 値を指定して生成される実行ファイルは、指定された命令セットをサポートしているインテル® プロセッサーでのみ動作します。

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

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

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

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

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

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

SSE2 を除くすべての設定で CPU チェックが行われます。ただし、-O0 (Linux* および macOS*) または /Od (Windows*) を指定すると、CPU チェックは行われません。

IDE オプション

Visual Studio*: [Code Generation (コード生成)] > [Intel Processor-Specific Optimization (指定された命令セットの専用コード生成)]

Eclipse*: [Code Generation (コード生成)] > [Intel Processor-Specific Optimization (指定された命令セットの専用コード生成)]

Xcode*: [Code Generation (コード生成)] > [Intel Processor-Specific Optimization (指定された命令セットの専用コード生成)]

代替オプション

なし

最適化に関する注意事項

インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。

注意事項の改訂 #20110804

関連情報