Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
Gibt die Architektur für die Codegenerierung unter Verwendung von SSE-Anweisungen (Streaming-SIMD-Erweiterungen) und SSE2-Anweisungen (Streaming-SIMD-Erweiterungen 2) an.
/arch:[SSE|SSE2]
Hinweise
Hinweis: |
|---|
/arch ist nur verfügbar, wenn für die x86-Plattform kompiliert wird. Diese Compileroption ist nicht verfügbar, wenn für x64 oder Itanium kompiliert wird. |
Die SSE-Anweisungen werden in verschiedenen Pentium- und AMD Athlon-Prozessoren verwendet. SSE2-Anweisungen sind derzeit lediglich im Pentium 4-Prozessor vorhanden.
/arch:SSE ermöglicht dem Compiler, die SSE-Anweisungen zu verwenden, und /arch:SSE2 ermöglicht dem Compiler die Verwendung der SSE2-Anweisungen.
_M_IX86_FP gibt an, welche /arch-Compileroption verwendet wurde. Weitere Informationen finden Sie unter Predefined Macros.
Der Optimierer legt fest, wann und wie die SSE- und SSE2-Anweisungen bei Angabe von /arch genutzt werden. SSE- und SSE2-Anweisungen werden derzeit für einige skalare Gleitkommaberechnungen verwendet, und zwar in Fällen, in denen die Verwendung der SSE/SSE2-Anweisungen und -Register Leistungsvorteile gegenüber dem x87-Gleitkomma-Registerstapel bietet. Dies bedeutet, dass im Code für Gleitkommaberechnungen tatsächlich eine Kombination aus x87 und SSE/SSE2 verwendet wird. Darüber hinaus können mit /arch:SSE2 SSE2-Anweisungen für einige 64-Bit-Ganzzahloperationen verwendet werden.
Neben den SSE- und SSE2-Anweisungen verwendet der Compiler weitere Anweisungen, die in den jeweiligen Prozessorrevisionen mit SSE- und SSE2-Unterstützung verfügbar sind. Die CMOV-Anweisung, die zuerst in der PentiumPro-Revision der Intel-Prozessoren verwendet wurde, ist ein Beispiel hierfür.
Bei der Kompilierung mit /clr (Common Language Runtime-Kompilierung) hat /arch keinen Einfluss auf die Codegenerierung für verwaltete Funktionen, da /arch lediglich Auswirkungen auf die Codegenerierung für systemeigene Funktionen hat.
/arch und /QIfist (_ftol unterdrücken) dürfen nicht in derselben Kompiliereinheit verwendet werden.
Insbesondere wird, wenn der Benutzer das FP-Steuerwort nicht mit _controlfp ändert, das Genauigkeitskontrollfeld des x87-FPU-Steuerworts durch den Laufzeit-Startcode auf 53 Bits festgelegt, sodass alle Operationen mit dem Typ float und double innerhalb eines Ausdrucks mit einem 53-Bit-Signifikanden und einem 15-Bit-Exponenten ausgeführt werden. Alle SSE-Operationen mit einfacher Genauigkeit verwenden jedoch 24-Bit-Signifikanden/8-Bit-Exponenten, und SSE2-Operationen mit doppelter Genauigkeit verwenden 53-Bit-Signifikanden/11-Bit-Exponenten. Weitere Informationen finden Sie unter _control87, _controlfp, __control87_2.
Zur Veranschaulichung: Diese Unterschiede können in einer einzigen Ausdrucksbaumstruktur auftreten. Dies gilt nicht, wenn nach jedem untergeordneten Ausdruck eine Benutzerzuordnung stattfindet:
r = f1 * f2 + d; // Different results are possible on SSE/SSE2.
Gegenüber:
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.
Da die MXCSR-Steuerbits durch controlfp nicht geändert werden, werden Funktionen, die die Verwendung von controlfp voraussetzen, durch /arch:SSE2 außer Kraft gesetzt.
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.
Klicken Sie auf den Ordner C/C++.
Klicken Sie auf die Eigenschaftenseite Codegenerierung.
Ändern Sie die Eigenschaft Erweitertes Anweisungsset aktivieren.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe EnableEnhancedInstructionSet.
Hinweis: