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

xHost、QxHost

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

アーキテクチャーの制限

インテル® Xeon Phi™ コプロセッサー x100 製品ファミリー (開発コード名 Knights Corner) をターゲットとするインテル® 64 アーキテクチャー、インテル® グラフィックス・テクノロジーをターゲットとする IA-32 アーキテクチャー、またはインテル® グラフィックス・テクノロジーをターゲットとするインテル® 64 アーキテクチャーでは利用できません。

構文

Linux* および OS X*:

-xHost

Windows®:

/QxHost

引数

なし

デフォルト

Windows® システム: なし

Linux* システム: なし

IA-32 アーキテクチャー・ベースの OS X* システム: -xSSE3

インテル® 64 アーキテクチャー・ベースの OS X* システム: -xSSSE3

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

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

説明

このオプションは、コンパイルを行うホスト・プロセッサーで利用可能な最上位の命令セット向けのコードを生成するようにコンパイラーに指示します。

このコンパイラー・オプションで生成される命令は、コンパイルを行うホスト・プロセッサーによって異なります。

次の表は、[Q]xHost オプションを指定した場合の効果と、出力される実行ファイルがホスト・プロセッサーとは異なるプロセッサーで実行できるかどうかを示します。

表の説明は、インテル® アドバンスト・ベクトル・エクステンション 2 (インテル® AVX2)、インテル® AVX、インテル® ストリーミング SIMD 拡張命令 (インテル® SSE)、SSE 補足命令 (SSSE) についてです。

ホスト・プロセッサーの命令セット

-xHost または /QxHost コンパイラー・オプションが指定された場合の効果

インテル® AVX-512

インテル® Xeon Phi™ コプロセッサー (開発コード名 Knights Landing) 向けにコンパイルする場合: [Q]xMIC-AVX512 オプションに相当します。生成された実行ファイルは、インテル以外のプロセッサーと、インテル® AVX-512 基本命令、競合検出命令、プリフェッチ命令、指数および逆数命令をすべてサポートしていないインテル® プロセッサー上では動作しません。

インテル® AVX2

インテル® プロセッサー上でコンパイルする場合:

[Q]xCORE-AVX2 に相当します。生成された実行ファイルは、インテル以外のプロセッサーと、インテル® AVX2 命令をサポートしていないインテル® プロセッサー上では動作しません。

インテル以外のプロセッサー上でコンパイルする場合:

-march=core-avx2 オプション (Linux* および OS X*) または /arch:CORE-AVX2 オプション (Windows®) に相当します。生成された実行ファイルは、インテル® AVX2 命令以上をサポートするインテル® プロセッサーおよびインテル以外のプロセッサーで動作します。インテル® AVX2 命令をサポートしていないランタイム・プロセッサーでは、ランタイムエラーが発生することがあります。

インテル® AVX

インテル® プロセッサー上でコンパイルする場合:

[Q]xAVX に相当します。生成された実行ファイルは、インテル以外のプロセッサーと、インテル® AVX 命令をサポートしていないインテル® プロセッサー上では動作しません。

インテル以外のプロセッサー上でコンパイルする場合:

-mavx オプション (Linux* および OS X*) または /arch:AVX オプション (Windows®) に相当します。生成された実行ファイルは、インテル® AVX 命令以上をサポートするインテル® プロセッサーおよびインテル以外のプロセッサーで動作します。インテル® AVX 命令をサポートしていないランタイム・プロセッサーでは、ランタイムエラーが発生することがあります。

インテル® SSE4.2

インテル® プロセッサー上でコンパイルする場合:

[Q]xSSE4.2 に相当します。生成された実行ファイルは、インテル以外のプロセッサーと、インテル® SSE4.2 命令をサポートしていないインテル® プロセッサー上では動作しません。

インテル以外のプロセッサー上でコンパイルする場合:

-msse4.2 オプション (Linux* および OS X*) または /arch:SSE4.2 オプション (Windows®) に相当します。生成された実行ファイルは、インテル® SSE4.2 命令以上をサポートするインテル® プロセッサーおよびインテル以外のプロセッサーで動作します。インテル® SSE4.2 命令をサポートしていないランタイム・プロセッサーでは、ランタイムエラーが発生することがあります。

インテル® SSE4.1

インテル® プロセッサー上でコンパイルする場合:

[Q]xSSE4.1 に相当します。生成された実行ファイルは、インテル以外のプロセッサーと、インテル® SSE4.1 命令をサポートしていないインテル® プロセッサー上では動作しません。

インテル以外のプロセッサー上でコンパイルする場合:

-msse4.1 オプション (Linux* および OS X*) または /arch:SSE4.1 オプション (Windows®) に相当します。生成された実行ファイルは、インテル® SSE4.1 命令以上をサポートするインテル® プロセッサーおよびインテル以外のプロセッサーで動作します。インテル® SSE4.1 命令をサポートしていないランタイム・プロセッサーでは、ランタイムエラーが発生することがあります。

インテル® SSSE3

インテル® プロセッサー上でコンパイルする場合:

[Q]xSSSE3 に相当します。生成された実行ファイルは、インテル以外のプロセッサーと、インテル® SSSE3 命令をサポートしていないインテル® プロセッサー上では動作しません。

インテル以外のプロセッサー上でコンパイルする場合:

-mssse3 オプション (Linux* および OS X*) または /arch:SSSE3 オプション (Windows®) に相当します。生成された実行ファイルは、インテル® SSSE3 命令以上をサポートするインテル® プロセッサーおよびインテル以外のプロセッサーで動作します。インテル® SSSE3 命令をサポートしていないランタイム・プロセッサーでは、ランタイムエラーが発生することがあります。

インテル® SSE3

インテル® プロセッサー上でコンパイルする場合:

[Q]xSSE3 に相当します。生成された実行ファイルは、インテル以外のプロセッサーと、インテル® SSE3 命令をサポートしていないインテル® プロセッサー上では動作しません。

インテル以外のプロセッサー上でコンパイルする場合:

-msse3 オプション (Linux* および OS X*) または /arch:SSE3 オプション (Windows®) に相当します。生成された実行ファイルは、インテル® SSE3 命令以上をサポートするインテル® プロセッサーおよびインテル以外のプロセッサーで動作します。インテル® SSE3 命令をサポートしていないランタイム・プロセッサーでは、ランタイムエラーの警告が発生することがあります。

インテル® SSE2

インテル® プロセッサーまたはインテル以外のプロセッサー上でコンパイルする場合:

-msse2 オプション (Linux* および OS X*) または /arch:SSE2 オプション (Windows®) に相当します。生成された実行ファイルは、インテル® SSE2 命令以上をサポートするインテル® プロセッサーおよびインテル以外のプロセッサーで動作します。インテル® SSE2 命令をサポートしていないランタイム・プロセッサーでは、ランタイムエラーが発生することがあります。

[Q]x オプションの詳細は、オプションの説明を参照してください。

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

関連情報