Compartir a través de


/arch (x86)

Especifica la arquitectura para la generación de código en x86.Vea también /arch (x64) y /arch (ARM).

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

Argumentos

  • /arch:IA32
    No especifica ninguna instrucción mejorada y también especifica x87 para los cálculos de punto flotante.

  • /arch:SSE
    Habilita el uso de instrucciones de SSE.

  • /arch:SSE2
    Habilita el uso de instrucciones SSE2.Ésta es la instrucción predeterminada en plataformas x86 si no se especifica ninguna opción de /arch.

  • /arch:AVX
    Habilita el uso de Intel avanzada de las instrucciones de extensiones de vector.

Comentarios

Las instrucciones SSE2 y SSE existen en varios procesadores de AMD e Intel.Las instrucciones AVX existen en los procesadores Intel Sandy Bridge y AMD Bulldozer.

La macro de _M_IX86_FP indica qué, si existe, se utilizó la opción del compilador /arch.Para obtener más información, vea Macros predefinidas.

El optimizador elige cuándo y cómo se utilizan las instrucciones SSE2 y SSE cuando se especifica /arch.Utiliza SSE y las instrucciones SSE2 para algunos cálculos flotantes escalares cuando determina que es más rápido utilizar instrucciones SSE/SSE2 y registros en lugar de la pila de registro de punto flotante x87.En consecuencia, el código utilizará realmente una combinación de instrucciones y registros de x87 y de SSE/SSE2 para las operaciones de punto flotante.Además, con /arch:SSE2, las instrucciones SSE2 se pueden utilizar para algunas operaciones con números enteros de 64 bits.

Además de utilizar las instrucciones de SSE y SSE2, el compilador también hace uso de otras instrucciones que se incluyen en las revisiones de procesadores que admiten SSE y SSE2.Un ejemplo es la instrucción CMOV, que apareció por primera vez en la revisión Pentium Pro de los procesadores Intel.

Cuando se utiliza /clr para compilar, /arch no tiene ningún efecto sobre la generación de código para las funciones administradas./arch solo afecta a la generación de código de las funciones nativas.

/arch y /QIfist no pueden utilizarse en la misma operación de compilación.En concreto, si no utiliza _controlfp para modificar la palabra de control de punto de congelación, entonces los códigos de inicio en tiempo de ejecución el campo de la precisión- CONTROL de word de control de x87 FPU a 53 bits.Por consiguiente, cada float y operación doble en una expresión utiliza un significand de 53 bits y un exponente de 15 bits.Sin embargo, cada operación de precisión sencilla de SSE utiliza 24 significand de bits y un exponente de 8 bits, y las operaciones de doble precisión SSE2 utilizan un significand de 53 bits y un exponente de 11 bits.Para obtener más información, vea _control87, _controlfp, __control87_2.Estas diferencias son posibles en un árbol de expresión, pero no en los casos en los que se produce una asignación de usuario después de cada subexpresión.Tenga en cuenta lo siguiente:

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

Frente a:

   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 no cambia los bits de control de MXCSR.Por consiguiente, con /arch:SSE2, cualquier funcionalidad que depende del uso de controlfp estará rota.

Para establecer esta opción del compilador para SSE o SSE2 en Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto.Para obtener más información, vea Cómo: Abrir páginas de propiedades del proyecto.

  2. Seleccione la carpeta C/C++.

  3. Seleccione la página de propiedades Generación de código.

  4. Modifique la propiedad Habilitar conjunto de instrucciones mejoradas.

Para establecer la opción del compilador /arch:AVX en Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto.Para obtener más información, vea Cómo: Abrir páginas de propiedades del proyecto.

  2. Seleccione la carpeta C/C++.

  3. Seleccione la página de propiedades Línea de comandos.

  4. En el cuadro Opciones adicionales, agregue /arch:AVX.

Para establecer esta opción del compilador mediante programación

Vea también

Referencia

/arch (Arquitectura de CPU mínima)

Opciones del compilador

Establecer las opciones del compilador