/arch (x64)
x64 でのコード生成のアーキテクチャを指定します。 その他のターゲット アーキテクチャの/arch詳細については、(x86)、(ARM64)、/archおよび/arch (ARM) を参照してください/arch。
構文
/arch:[AVX|AVX2|AVX512]
引数
/arch:AVX
Advanced Vector Extensions 命令の使用を有効にします。
/arch:AVX2
Advanced Vector Extensions 2 命令の使用を有効にします。
/arch:AVX512
Intel Advanced Vector Extensions 512 命令の使用を有効にします。
解説
この /arch オプションを使用すると、Intel と AMD のプロセッサで使用できる特定の命令セット拡張機能 (特にベクター計算用) を使用できます。 一般に、最近導入されたプロセッサでは、以前のプロセッサでサポートされているもの以外の拡張機能がサポートされる場合がありますが、命令セット拡張機能を使用してコードを実行する前に、特定のプロセッサのドキュメントを参照するか、命令セット拡張機能のサポートをテスト __cpuid する必要があります。
/arch は、ネイティブ関数のコード生成にのみ影響します。 コンパイルに使用 /clr する場合、 /arch マネージド関数のコード生成には影響しません。
プロセッサ拡張機能には、次の特性があります。
既定のモードでは、スカラー浮動小数点とベクトルの計算に SSE2 命令が使用されます。 これらの命令では、単精度、倍精度、1、2、4、または 8 バイトの整数値の 128 ビット ベクトルと、単精度および倍精度スカラー浮動小数点値を使用して計算できます。
AVXでは、ベクトルおよび浮動小数点スカラー命令の代替命令エンコードが導入されました。 これにより、128 ビットまたは 256 ビットのベクトルが可能になり、すべてのベクター結果が完全なベクター サイズに拡張されます。 (従来の互換性のために、SSE スタイルのベクター命令では、ビット 127 を超えるすべてのビットが保持されます)。ほとんどの浮動小数点演算は、256 ビットに拡張されます。AVX2は、ほとんどの整数演算を 256 ビット ベクトルに拡張し、Fused Multiply-Add (FMA) 命令を使用できるようにします。AVX-512には、512 ビット ベクトルを使用できる別の命令エンコード フォームと、他の特定のオプション機能が導入されました。 その他の操作の手順も追加されました。
各 /arch オプションでは、そのオプションに関連付けられている他の非ベクトル命令の使用を有効にすることもできます。 たとえば、指定されている場合に特定の BMI 命令を /arch:AVX2 使用します。
__AVX__プリプロセッサ シンボルは、または/arch:AVX512コンパイラ オプションが /arch:AVX2/arch:AVX指定されている場合に定義されます。 __AVX2__プリプロセッサ シンボルは、または/arch:AVX512コンパイラ オプションが/arch:AVX2指定されたときに定義されます。 __AVX512CD__、__AVX512F__、 __AVX512DQ____AVX512BW__および__AVX512VL__プリプロセッサ シンボルは、コンパイラ オプションが/arch:AVX512指定されたときに定義されます。 詳細については、「定義済みマクロ」を参照してください。 このオプションは/arch:AVX2、Visual Studio 2013 Update 2 バージョン 12.0.34567.1 で導入されました。 Visual Studio 2017 で制限付き /arch:AVX512 サポートが追加され、Visual Studio 2019 で拡張されました。
Visual Studio で /arch:AVX、 /arch:AVX2 または /arch:AVX512 コンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳しくは、「Visual Studio で C++ コンパイラとビルド プロパティを設定する」をご覧ください。
[構成プロパティ]>[C/C++]>[コード生成] プロパティ ページを選択します。
[拡張命令セットを有効にする] ドロップダウン ボックスで、[Advanced Vector Extensions (/arch:AVX)]、[Advanced Vector Extensions 2 (/arch:AVX2)]、または [Advanced Vector Extensions 512 (/arch:AVX512)] を選択します。
このコンパイラ オプションをコードから設定するには
- 以下を参照してください。EnableEnhancedInstructionSet
関連項目
/arch (最小 CPU アーキテクチャ)
MSVC コンパイラ オプション
MSVC コンパイラ コマンド ラインの構文