Partager via


/arch (x64)

Spécifie l'architecture pour la génération de code sur x64. Pour plus d’informations sur /arch les autres architectures cibles, consultez /arch (x86), /arch (ARM64) et /arch (ARM).

Syntaxe

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

Arguments

/arch:SSE2
Active les extensions SIMD Intel Streaming 2. Le jeu d’instructions par défaut est SSE2 si aucune option n’est /arch spécifiée.

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

/arch:AVX
Active les extensions de vecteurs avancées Intel.

/arch:AVX2
Active Intel Advanced Vector Extensions 2.

/arch:AVX512
Active Intel Advanced Vector Extensions 512.

/arch:AVX10.1
Active Intel Advanced Vector Extensions 10 version 1.

Notes

L’option /arch permet d’utiliser certaines extensions de jeu d’instructions, en particulier pour le calcul vectoriel, disponibles dans les processeurs d’Intel et AMD. En général, les processeurs introduits plus récemment peuvent prendre en charge des extensions au-delà des extensions prises en charge par les processeurs plus anciens, bien que vous deviez consulter la documentation d’un processeur particulier ou tester la prise en charge de l’extension de jeu d’instructions à l’aide __cpuid d’une extension de jeu d’instructions. Vous pouvez également utiliser l’intrinsèque __check_isa_support pour rechercher les fonctionnalités processeur plus fréquemment utilisées.

/arch affecte uniquement la génération de code pour les fonctions natives. Lorsque vous utilisez /clr pour compiler, /arch n’a aucun effet sur la génération de code pour les fonctions managées.

Les extensions de processeur présentent les caractéristiques suivantes :

  • Le mode par défaut utilise des instructions SSE2 pour les calculs à virgule flottante scalaire et vectorielle. Ces instructions permettent de calculer avec des vecteurs 128 bits de précision unique, double précision et 1, 2, 4 ou 8 octets, ainsi que des valeurs à virgule flottante scalaire à précision unique et double précision.

  • SSE4.2 utilise l’ensemble complet d’instructions SSE pour les calculs de vecteurs scalaires, vectoriels et entiers à virgule flottante.

  • AVX a introduit un autre encodage d’instructions pour les instructions scalaires à virgule flottante et vectorielle. Il autorise les vecteurs de 128 bits ou de 256 bits, et zéro étend tous les résultats de vecteur à la taille complète du vecteur. (Pour la compatibilité héritée, les instructions vectorielles de style SSE conservent tous les bits au-delà du bit 127.) La plupart des opérations à virgule flottante sont étendues à 256 bits.

  • AVX2 étend la plupart des opérations entières à des vecteurs 256 bits et permet d’utiliser des instructions FMA (Fused Multiply-Add).

  • AVX-512 a introduit un autre formulaire d’encodage d’instructions qui autorise les vecteurs 512 bits, le masquage, l’arrondi incorporé/diffusion et de nouvelles instructions. La longueur du vecteur par défaut est AVX-512 de 512 bits et peut être modifiée en 256 bits à l’aide de l’indicateur /vlen .

  • AVX10.1 ajoute d’autres instructions en plus de AVX-512. La longueur du vecteur par défaut est AVX10.1 de 256 bits et peut être modifiée en 512 bits à l’aide de l’indicateur /vlen .

Chaque /arch option peut également activer l’utilisation d’autres instructions non vectorielles associées à cette option. Par exemple, il s’agit de l’utilisation de certaines instructions DMI quand /arch:AVX2 elles sont spécifiées.

Le __AVX__ symbole de préprocesseur est défini lorsque l’option /arch:AVX, , /arch:AVX2/arch:AVX512ou /arch:AVX10.1 compilateur est spécifiée. Le __AVX2__ symbole de préprocesseur est défini lorsque l’option /arch:AVX2, /arch:AVX512ou /arch:AVX10.1 compilateur est spécifiée. Les __AVX512F__symboles , , __AVX512BW____AVX512DQ____AVX512CD__et __AVX512VL__ les symboles de préprocesseur sont définis lorsque l’option /arch:AVX512du compilateur ou /arch:AVX10.1 du compilateur est spécifiée. Le __AVX10_VER__ symbole de préprocesseur est défini lorsque l’option du /arch:AVX10.1 compilateur est spécifiée. Elle indique la version AVX10 que le compilateur cible. Pour plus d’informations, consultez Macros prédéfinies. L’option /arch:AVX2 a été introduite dans Visual Studio 2013 Update 2, version 12.0.34567.1. La prise en charge limitée de /arch:AVX512 Visual Studio 2017 a été ajoutée et développée dans Visual Studio 2019. La prise en charge a /arch:AVX10.1 été ajoutée dans Visual Studio 2022.

Pour définir l’option du /arch compilateur dans Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriétés du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.

  2. Sélectionnez la page de propriétés De configuration>C/C++>Génération de code.

  3. Modifiez la propriété Enable Enhanced Instruction Set .

Pour définir cette option du compilateur par programmation

Voir aussi

/arch (Architecture processeur minimale)
Options du compilateur MSVC
Syntaxe de ligne de commande du compilateur MSVC