Freigeben über


/arch (x86)

Gibt die Architektur für die Codegenerierung auf x86 an.Siehe auch /arch (x64) und /arch (ARM).

/arch:[IA32|SSE|SSE2|AVX]

Argumente

  • /arch:IA32
    Gibt keine erweiterten Anweisungen auf und gibt auch x87 für Gleitkommaberechnungen an.

  • /arch:SSE
    Ermöglicht die Verwendung von SSE-Anweisungen.

  • /arch:SSE2
    Ermöglicht die Verwendung von Anweisungen SSE2-Anweisungen.Dies ist die Standard -- Anweisung auf x86-Plattformen, wenn keine /arch Option angegeben wird.

  • /arch:AVX
    Ermöglicht die Verwendung von Intel erweiterte Vektor-Erweiterungsanweisungen.

Hinweise

Die SSE- und SSE2-Anweisungen werden in verschiedenen Intel- und AMD-Prozessoren verwendet.Die AVX-Anweisungen gibt es bei Intel Sandy Bridge- und AMD Bulldozer-Prozessoren.

Das _M_IX86_FP-Makro gibt an, das ggf. /arch-Compileroption verwendet wurde.Weitere Informationen finden Sie unter Vordefinierte Makros.

Der Optimierer wählt aus, wann und wie die SSE- und SSE2-Anweisungen bei Angabe von /arch verwendet werden.Es verwendet Anweisungen SSE und SSE2 für einige skalare Gleitkommaberechnungen, wenn bestimmt, dass es schneller ist, die - Anweisungen SSE/SSE2 und die Register anstelle des Stapels des Gleitkommaregisters zu verwenden x87.Dies bedeutet, dass im Code für Gleitkommaberechnungen tatsächlich eine Kombination aus x87 und SSE/SSE2 verwendet wird.Außerdem mit /arch:SSE2, können Anweisungen SSE2-Anweisungen für einige 64-Bit-Ganzzahl-Vorgänge 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.

Wenn Sie /clr verwenden, um zu kompilieren, /arch hat keine Auswirkungen auf die Codegenerierung für verwaltete Funktionen./arch wirkt sich nur auf Codegenerierung für systemeigene Funktionen aus.

/arch und /QIfist können nicht für dieselbe Kompiliereinheit verwendet werden.Insbesondere wenn Sie nicht _controlfp verwenden, um das FP-Steuerwort zu ändern, dann die Ablaufstartcodecodesätz das Steuerwort-GenauigkeitSteuerelementfeld x87 FPU in 53 Bits.Daher verwendet jedes Float und Doublevorgang in einem Ausdruck einen Signifikanden mit 53 Bits und einen Exponenten mit 15 Bits.verwendet jedoch jede Operation SSE mit einfacher Genauigkeit einen 24-Bit-Signifikanden und einen 8-Bit-Exponenten Operationen, und SSE2 verwenden mit doppelter Genauigkeit einen Signifikanden mit 53 Bits und einen Exponenten mit 11 Bits.Weitere Informationen finden Sie unter _control87, _controlfp, __control87_2.Diese Unterschiede können in einer Ausdrucksbaumstruktur auftreten. Dies gilt jedoch nicht, wenn nach jedem untergeordneten Ausdruck eine Benutzerzuordnung stattfindet:Berücksichtigen Sie die folgenden Punkte:

    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 
                  // whether x87 stack is used or SSE/SSE2 is used.

controlfp ändert nicht die MXCSR-Steuerelementbits.Daher mit /arch:SSE2, wird jede Funktionalität, die von der Verwendung von controlfp abhängt, unterbrochen.

So legen Sie diese Compileroption für SSE oder SSE2 in Visual Studio fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten für das Projekt.Weitere Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.

  2. Wählen Sie den C/C++ Ordner aus.

  3. Wählen Sie die Eigenschaftenseite Codegenerierung aus.

  4. Ändern Sie die Eigenschaft Erweitertes Anweisungsset aktivieren.

So legen Sie die /arch:AVX-Compileroption in Visual Studio fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten für das Projekt.Weitere Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.

  2. Wählen Sie den C/C++ Ordner aus.

  3. Wählen Sie die Eigenschaftenseite Befehlszeile aus.

  4. Fügen Sie im Feld Zusätzliche Optionen/arch:AVX hinzu.

So legen Sie diese Compileroption programmgesteuert fest

Siehe auch

Referenz

/arch (Minimale CPU-Architektur)

Compileroptionen

Festlegen von Compileroptionen