Compartir a través de


/arch (x64)

Especifica la arquitectura para la generación de código en x64. Para más información sobre /arch en otras arquitecturas de destino, consulte /arch (x86), /arch (ARM64) y /arch (ARM).

Sintaxis

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

Argumentos

/arch:SSE2
Habilita Intel Streaming SIMD Extensions 2. El conjunto de instrucciones predeterminado es SSE2 si no se especifica ninguna /arch opción.

/arch:SSE4.2
Habilita Intel Streaming SIMD Extensions 4.2.

/arch:AVX
Habilita las extensiones de vector avanzado de Intel.

/arch:AVX2
Habilita Intel Advanced Vector Extensions 2.

/arch:AVX512
Habilita intel Advanced Vector Extensions 512.

/arch:AVX10.1
Habilita intel Advanced Vector Extensions 10 versión 1.

Comentarios

La opción /arch habilita el uso de determinadas extensiones de conjunto de instrucciones, especialmente para el cálculo de vectores, que están disponibles en procesadores de Intel y AMD. En general, los procesadores introducidos más recientemente pueden admitir extensiones más allá de las admitidas por procesadores anteriores, aunque debería consultar la documentación de cada procesador determinado o probar la compatibilidad con la extensión del conjunto de instrucciones mediante __cpuid antes de ejecutar código mediante una extensión del conjunto de instrucciones.

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

Las extensiones de procesador tienen las siguientes características:

  • El modo predeterminado usa instrucciones de SSE2 para los cálculos vectoriales y escalares de punto flotante. Estas instrucciones permiten el cálculo con vectores de 128 bits de precisión sencilla, precisión doble y valores enteros de 1, 2, 4 u 8 bytes, así como valores de punto flotante escalar de precisión sencilla y doble precisión.

  • SSE4.2 usa el conjunto completo de instrucciones de SSE para los cálculos de vectores escalares, vectores e enteros de punto flotante.

  • AVX introdujo una codificación alternativa de instrucciones para instrucciones escalares y vectoriales de punto flotante. Permite vectores de 128 bits o 256 bits y extiende a cero todos los resultados vectoriales hasta el tamaño de vector completo. Para la compatibilidad heredada, las instrucciones vectoriales de estilo SSE conservan todos los bits más allá del bit 127. La mayoría de las operaciones de punto flotante se extienden hasta los 256 bits.

  • AVX2 extiende la mayoría de las operaciones de entero a vectores de 256 bits y habilita el uso de instrucciones de multiplicación y suma fusionadas (FMA).

  • AVX-512 introdujo otro formulario de codificación de instrucciones que permite vectores de 512 bits, enmascaramiento, redondeo/difusión insertados y nuevas instrucciones. La longitud de vector predeterminada para AVX-512 es de 512 bits y se puede cambiar a 256 bits mediante la /vlen marca .

  • AVX10.1 agrega más instrucciones sobre AVX-512. La longitud de vector predeterminada para AVX10.1 es de 256 bits y se puede cambiar a 512 bits mediante la /vlen marca .

Cada opción /arch también puede habilitar el uso de otras instrucciones no vectoriales asociadas a esa opción. Un ejemplo es el uso de determinadas instrucciones BMI (instrucciones de manipulación de bits) cuando se especifica /arch:AVX2.

El __AVX__ símbolo del preprocesador se define cuando se especifica la /arch:AVXopción del compilador , /arch:AVX2/arch:AVX512, o /arch:AVX10.1 . El __AVX2__ símbolo del preprocesador se define cuando se especifica la /arch:AVX2opción del compilador , /arch:AVX512o /arch:AVX10.1 . Los __AVX512F__símbolos del preprocesador , __AVX512BW____AVX512CD__, , __AVX512DQ__y __AVX512VL__ se definen cuando se especifica la /arch:AVX512opción del compilador , o /arch:AVX10.1 . El __AVX10_VER__ símbolo del preprocesador se define cuando se especifica la /arch:AVX10.1 opción del compilador. Indica que la versión de AVX10 que el compilador tiene como destino. Para obtener más información, consulte Macros predefinidas. La opción /arch:AVX2 se introdujo en Visual Studio 2013 Actualización 2, versión 12.0.34567.1. La compatibilidad limitada con /arch:AVX512 se incorporó en Visual Studio 2017 y se amplió en Visual Studio 2019. Se ha agregado compatibilidad con /arch:AVX10.1 en Visual Studio 2022.

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

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.

  2. Seleccione la página de propiedades Propiedades de configuración>C/C++>Generación de código.

  3. Modifique la propiedad Habilitar conjunto de instrucciones mejorado.

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

Consulte también

/arch (Arquitectura de CPU mínima)
Opciones del compilador de MSVC
Sintaxis de línea de comandos del compilador de MSVC