Partager via


/arch (Architecture d'UC minimale)

Mise à jour : novembre 2007

Spécifie l'architecture de génération du code à l'aide d'instructions d'extensions SIMD de diffusion en continu (SSE, Streaming SIMD Extensions) et SSE2 (Streaming SIMD Extensions 2).

/arch:[SSE|SSE2]

Notes

Remarque :

/arch n'est disponible que lors de la compilation pour la plateforme x86. Cette option du compilateur n'est pas disponible lors de la compilation pour x64 ou Itanium.

Les instructions SSE existent dans différent processeurs Pentium et AMD Athlon. Les instructions SSE2 ne sont employées que sur le processeur Pentium 4.

/arch:SSE permet au compilateur d'utiliser les instructions SSE, et /arch:SSE2 lui permet d'utiliser les instructions SSE2.

_M_IX86_FP indique l'option du compilateur /arch (éventuelle) qui a été utilisée ; consultez Predefined Macros pour plus d'informations.

L'optimiseur détermine quand et comment employer les instructions SSE et SSE2 lorsque /arch est spécifié. Les instructions SSE et SSE2 sont utilisées pour certains calculs scalaires en virgule flottante lorsqu'il s'avère plus rapide d'employer les instructions et les registres 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.

Le compilateur permet non seulement l'utilisation d'instructions SSE et SSE2, il emploie également d'autres instructions mises en œuvre lors de révisions de processeur prenant en charge les extensions SSE et SSE2. L'instruction CMOV est ainsi apparue lors de la révision Pentium Pro des processeurs Intel.

Lors d'une compilation avec /clr (Compilation pour le Common Language Runtime), /arch n'aura aucun effet sur la génération de code des fonctions managées ; /arch agit uniquement sur la génération de code des fonctions natives.

/arch et /QIfist (Supprimer _ftol) ne peuvent pas être utilisés sur le même module (compiland).

Plus particulièrement, si l'utilisateur n'emploie pas _controlfp pour modifier le mot de commande FP, le code de démarrage du runtime paramètre à 53 bits le champ de commande de précision du mot de commande x87 FPU, de telle sorte que toutes les opérations flottantes et à double précision dans une expression s'effectuent avec la mantisse 53 bits et l'exposant 15 bits. Toutes les opérations SSE à simple précision utilisent toutefois une mantisse 24 bits et un exposant 8 bits, tandis que les opérations SSE2 à double précision emploient une mantisse 53 bits et un exposant 11 bits. Pour plus d'informations, consultez _control87, _controlfp, __control87_2.

Ces différences sont possibles dans une arborescence d'expression, pas dans les cas où une assignation utilisateur intervient 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 commande MXCSR ; ainsi, avec /arch:SSE2, toute fonctionnalité qui dépend de l'utilisation de controlfp sera interrompue.

Pour définir cette option du compilateur dans l'environnement de développement 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 cette option du compilateur par programme

Voir aussi

Référence

Options du compilateur

Définition des options du compilateur