/arch (x64)

x64 でのコード生成のアーキテクチャを指定します。 その他のターゲット アーキテクチャの/arch詳細については、「(x86)、(ARM64)/archおよび/arch (ARM)」を参照してください。/arch

構文

/arch:[SSE2AVX10.1|AVX512|||AVX2|SSE4.2AVX]

引数

/arch:SSE2
Intel Streaming SIMD Extensions 2 を有効にします。 オプションが指定されていない /arch 場合、既定の命令セットは SSE2 です。

/arch:SSE4.2
Intel Streaming SIMD Extensions 4.2 を有効にします。

/arch:AVX
Intel Advanced Vector Extensions を有効にします。

/arch:AVX2
Intel Advanced Vector Extensions 2 を有効にします。

/arch:AVX512
Intel Advanced Vector Extensions 512 を有効にします。

/arch:AVX10.1
Intel Advanced Vector Extensions 10 バージョン 1 を有効にします。

解説

この /arch オプションを使用すると、特定の命令セット拡張 (特にベクター計算用) を Intel および AMD のプロセッサで使用できます。 一般に、最近導入されたプロセッサは、以前のプロセッサでサポートされているもの以外の拡張機能をサポートする可能性がありますが、命令セット拡張機能を使用 __cpuid してコードを実行する前に、特定のプロセッサのドキュメントを参照するか、命令セット拡張機能のサポートをテストする必要があります。

/arch は、ネイティブ関数のコード生成にのみ影響します。 コンパイルに使用 /clr する場合、 /arch マネージド関数のコード生成には影響しません。

プロセッサ拡張機能には、次の特性があります。

  • 既定のモードでは、スカラー浮動小数点とベクトルの計算に SSE2 命令が使用されます。 これらの命令により、単精度、倍精度、1、2、4、または 8 バイトの整数値の 128 ビット ベクトルと、単精度および倍精度スカラー浮動小数点値を使用した計算が可能になります。

  • SSE4.2 では、浮動小数点スカラー、ベクター、整数ベクトルの計算に SSE 命令の完全なセットが使用されます。

  • AVX ベクトルおよび浮動小数点スカラー命令の代替命令エンコードが導入されました。 これにより、128 ビットまたは 256 ビットのベクトルが可能になり、すべてのベクター結果が完全なベクター サイズに拡張されます。 (従来の互換性のために、SSE スタイルのベクター命令はビット 127 を超えるすべてのビットを保持します)。ほとんどの浮動小数点演算は、256 ビットに拡張されます。

  • AVX2 は、ほとんどの整数演算を 256 ビット ベクトルに拡張し、Fused Multiply-Add (FMA) 命令を使用できるようにします。

  • AVX-512 では、512 ビット ベクトル、マスク、埋め込み丸め/ブロードキャスト、および新しい命令を可能にする別の命令エンコード フォームが導入されました。 既定の AVX-512 ベクター長は 512 ビットであり、フラグを使用して 256 ビットに /vlen 変更できます。

  • AVX10.1 の上にさらに命令を AVX-512追加します。 既定の AVX10.1 ベクター長は 256 ビットであり、フラグを使用して 512 ビットに /vlen 変更できます。

/arch オプションでは、そのオプションに関連付けられている他の非ベクター命令の使用を有効にすることもできます。 たとえば、指定されている場合に特定の BMI 命令を /arch:AVX2 使用します。

__AVX__プリプロセッサ シンボルは、、、/arch:AVX2/arch:AVX512、または/arch:AVX10.1コンパイラ オプションが指定されている場合/arch:AVXに定義されます。 __AVX2__プリプロセッサ シンボルは、,、または/arch:AVX10.1コンパイラ オプションが/arch:AVX2/arch:AVX512指定されている場合に定義されます。 __AVX512F____AVX512CD____AVX512BW____AVX512DQ__および__AVX512VL__プリプロセッサ シンボルは、,または/arch:AVX10.1コンパイラ オプションが/arch:AVX512指定されている場合に定義されます。 __AVX10_VER__プリプロセッサ シンボルは、コンパイラ オプションが/arch:AVX10.1指定されたときに定義されます。 これは、コンパイラが対象としている AVX10 バージョンを示します。 詳細については、「定義済みマクロ」を参照してください。 このオプションは /arch:AVX2 、Visual Studio 2013 Update 2 バージョン 12.0.34567.1 で導入されました。 Visual Studio 2017 で制限付き /arch:AVX512 サポートが追加され、Visual Studio 2019 で拡張されました。 /arch:AVX10.1サポートが Visual Studio 2022 で追加されました。

Visual Studio で /arch コンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳しくは、「Visual Studio で C++ コンパイラとビルド プロパティを設定する」をご覧ください。

  2. [構成プロパティ]>[C/C++]>[コード生成] プロパティ ページを選択します。

  3. [拡張命令セットを有効にする] プロパティを変更します。

このコンパイラ オプションをコードから設定するには

関連項目

/arch (最小 CPU アーキテクチャ)
MSVC コンパイラ オプション
MSVC コンパイラのコマンド ライン構文