/arch (x86)

x86 でコードの生成のアーキテクチャを指定します。/arch (x64) および /arch (ARM) も参照してください。

/arch:[IA32|SSE|SSE2|AVX]

引数

  • /arch:IA32
    拡張命令を指定しないで、浮動小数点計算のために x87 を指定します。

  • /arch:SSE
    SSE 命令を使用できるようにします。

  • /arch:SSE2
    SSE2 命令の使用を有効にします。これは /arch のオプションが指定されていない場合、x86 プラットフォームの既定の命令です。

  • /arch:AVX
    Intel の使用を提供するベクターの拡張機能の命令を有効にします。

解説

SSE 命令および SSE2 命令は、さまざまな Intel プロセッサおよび AMD プロセッサに組み込まれています。AVX 命令は、Intel Sandy Bridge プロセッサおよび AMD Bulldozer プロセッサに組み込まれています。

_M_IX86_FP のマクロでは、/arch のコンパイラ オプションが使用されているかを示します。詳細については、「定義済みマクロ」を参照してください。

/arch を指定した場合、SSE 命令および SSE2 命令をいつどのように利用するかは、オプティマイザーによって選択されます。これは、スカラー浮動小数点演算に SSE/SSE2 命令を使用した方が高速判断し、x87 浮動小数点レジスタ スタックの代わりに登録した場合の SSE/SSE2 命令を使用します。したがって、実際のコードでは、浮動小数点演算に x87 と SSE/SSE2 の両方を組み合わせて使用します。また、/arch:SSE2と、SSE2 命令は、64 ビット整数演算に使用できます。

コンパイラでは、SSE 命令と SSE2 命令の使用に加え、SSE および SSE2 をサポートするプロセッサ リビジョンに組み込まれているその他の命令も使用します。例としては、Intel プロセッサの Pentium Pro リビジョンで初めて導入された CMOV 命令が挙げられます。

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

/arch/QIfist は、同じコンパイル単位では使用できません。特に FP の制御ワードを変更するために _controlfp を使用するとランタイムのスタートアップ コードでは、53 bit に x87 FPU 制御ワードの精度制御フィールド。したがって、式のすべての浮動と倍精度浮動小数点演算は、53 bit の有効桁と 15 bit の指数を使用します。ただし、すべての SSE 単精度の演算は、24 bit の有効桁と 8 ビットの指数を使用し、SSE2 倍精度浮動小数点演算は、53 bit の有効桁と 11 ビットの指数を使用します。詳細については、「_control87、_controlfp、__control87_2」を参照してください。これらの差異は、ユーザーの代入が各部分式の後に行われる場合ではなく、単一の式ツリー内で発生する可能性があります。次に例を示します。

    r = f1 * f2 + d;  // Different results are possible on SSE/SSE2.

以下と比較してください。

   t = f1 * f2;   // Do f1 * f2, round to the type of t.
   r = t + d;     // This should produce the same overall result 
                  // whether x87 stack is used or SSE/SSE2 is used.

controlfp では、MXCSR コントロール ビットは変更されません。したがって、/arch:SSE2と、controlfp の使用に依存する機能はすべて無効になります。

SSE または SSE2 のこのコンパイラ オプションを Visual Studio で設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。

  2. [C/C++] フォルダーを選択します。

  3. [コード生成] プロパティ ページを選択します。

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

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

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。

  2. [C/C++] フォルダーを選択します。

  3. [コマンド ライン] のプロパティ ページを選択します。

  4. [追加のオプション] ボックスに、「/arch:AVX」を追加します。

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

参照

関連項目

/arch (最小限の CPU アーキテクチャ)

コンパイラ オプション

コンパイラ オプションの設定