Partager via


/arch (Architecture d'UC minimale)

Spécifie l'architecture de génération de code à l'aide des instructions des extensions Streaming SIMD (SSE) et Streaming SIMD 2 (SSE2), ainsi que des instructions Advanced Vector Extension (AVX) .

/arch:[SSE|SSE2|AVX]

Notes

Notes

/arch:SSE et /arch:SSE2 sont disponibles uniquement lorsque vous compilez pour la plateforme x86. /arch:AVX est uniquement disponible pour les plateformes x64 et x86. Cette option du compilateur n'est pas disponible lorsque vous compilez pour Itanium.

Les instructions SSE2 et SSE existent sur différents processeurs AMD et Intel. Les instructions AVX existent sur les processeurs Intel Sandy Bridge et AMD Bulldozer.

/arch:SSE permet au compilateur d'utiliser les instructions SSE. /arch:SSE2 permet au compilateur d'utiliser les instructions SSE2. /arch:AVX demande au compilateur d'utiliser les encodages d'instruction AVX.

_M_IX86_FP indique l'option du compilateur /arch utilisée, s'il y en a une. Pour plus d'informations, consultez Predefined Macros.

L'optimiseur choisit quand et comment les instructions SSE et SSE2 doivent être utilisées lorsque /arch est spécifié. Les instructions SSE et SSE2 sont employées pour certains calculs en virgule flottante scalaires dès lors qu'il apparaît plus rapide d'utiliser les registres et instructions SSE/SSE2 plutôt que la pile de registres en virgule flottante x87. Votre code utilise donc un mélange de x87 et de SSE/SSE2 pour les calculs en virgule flottante. En outre, avec /arch:SSE2, des instructions SSE2 peuvent être utilisées pour certaines opérations 64 bits sur les entiers.

En plus d'utiliser les instructions de SSE2 et SSE, le compilateur utilise également des autres instructions qui sont présentes sur les révisions de processeur qui prennent en charge SSE et SSE2. Un exemple est l'instruction CMOV qui est apparue en premier sur la révision Pentium Pro des processeurs Intel.

Lorsque vous compilez en utilisant /clr, /arch n'a aucun effet sur la génération du code pour les fonctions managées. /arch affecte seulement la génération du code pour les fonctions natives.

/arch et /QIfist ne peuvent pas être utilisés sur le même compiland.

En particulier, si l'utilisateur n'utilise pas _controlfp pour modifier le mot de contrôle FP, le code de démarrage runtime définira le champ de contrôle de précision du mot de contrôle FPU x87 la valeur 53 bits. Par conséquent, chaque opération float et double dans une expression se produit avec un ///significand de 53 bits et un exposant de 15 bits. Toutefois, chaque opération en simple précision SSE utilise un exposant 8 bits/significand 24 bits, et les opérations en double précision SSE2 utilisent un exposant 11 bits/significand 53 bits. Pour plus d'informations, consultez _control87, _controlfp, __control87_2.

Ces différences sont possibles dans une arborescence d'expression, mais pas lorsqu'une assignation d'utilisateur est impliquée après chaque sous-expression.

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

Par rapport à :

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

controlfp ne change pas les bits de contrôle MXCSR. Par conséquent, avec /arch:SSE2, toutes les fonctionnalités qui dépendent de l'utilisation de controlfp seront arrêtées.

Pour définir cette option du compilateur pour SSE ou SSE2 dans Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d'informations, consultez Comment : ouvrir les pages de propriétés d'un projet.

  2. Cliquez sur le dossier C/C++.

  3. Cliquez sur la page de propriétés Génération de code.

  4. Modifiez la propriété Activation du jeu d'instructions amélioré.

Pour définir l'option du compilateur /arch:AVX dans Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d'informations, consultez Comment : ouvrir les pages de propriétés d'un projet.

  2. Cliquez sur le dossier C/C++.

  3. Cliquez sur la page de propriétés Ligne de commande.

  4. Dans la zone Options supplémentaires, ajoutez /arch: AVX.

Pour définir cette option du compilateur par programmation

Voir aussi

Référence

Options du compilateur

Définition des options du compilateur