Udostępnij za pośrednictwem


/arch (x86)

Określa architektury dla generowania kodu na x 86.Zobacz też /arch (x64) i /arch (ARM).

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

Argumenty

  • /arch:IA32
    Określa żadne instrukcje udoskonalone oraz określa 87 x w obliczeniach zmiennoprzecinkowych.

  • /arch:SSE
    Umożliwia korzystanie z instrukcji SSE.

  • /arch:SSE2
    Umożliwia korzystanie z instrukcji SSE2.Jest to domyślna instrukcja na x 86 platformy, jeśli nie /arch określono opcję.

  • /arch:AVX
    Umożliwia korzystanie z rozszerzeń wektora zaawansowane Intel instrukcje.

  • /arch:AVX2
    Umożliwia korzystanie z instrukcji Intel Advanced wektora rozszerzenia 2.

Uwagi

Instrukcje SSE i SSE2 istnieje na różnych procesorach Intel i AMD.Instrukcje AVX w elemencie procesory Intel Sandy mostek i procesory AMD Bulldozer.Instrukcje AVX2 są obsługiwane przez Intel Haswell i Broadwell procesory i na podstawie Koparka AMD procesorów.

_M_IX86_FP, __AVX__ i __AVX2__ makra określają, jeśli występuje, /arch została użyta opcja kompilatora.Aby uzyskać więcej informacji, zobacz Wstępnie zdefiniowane makra./arch:AVX2 Opcji i __AVX2__ makra zostały wprowadzone w programie Visual Studio 2013 Update 2, wersja 12.0.34567.1.

Optymalizator pozwala wybrać, kiedy i jak używać instrukcji SSE i SSE2 po /arch jest określony.Używa SSE i SSE2 instrukcje dotyczące niektórych skalarne obliczeń zmiennoprzecinkowych po Określa, że szybciej jest używanie instrukcji SSE/SSE2 i rejestruje zamiast zmiennoprzecinkowych 87 x zarejestrować stosu.W związku z tym kodu mogą faktycznie używać kombinację zarówno x 87 SSE/SSE2 obliczeń zmiennoprzecinkowych.Ponadto z /arch:SSE2, instrukcji SSE2 może służyć do niektórych operacji 64-bitowa wartość całkowita.

Tylko za pomocą instrukcji SSE i SSE2, kompilator używa inne instrukcje, które znajdują się na poprawki procesora, które obsługują SSE i SSE2.Przykładem jest po raz pierwszy wyświetlone o zmianie procesory Intel Pentium Pro instrukcji CMOV.

Ponieważ x 86 kompilator generuje kod, który używa instrukcji SSE2 domyślnie, należy określić /arch:IA32 Aby wyłączyć generowanie SSE i SSE2 instrukcje x 86 procesorów.

/archdotyczy tylko generowania kodu macierzystego funkcjach pomocy technicznej.Przy użyciu /CLR do kompilowania, /arch nie ma wpływu na generowanie kodu zarządzanego funkcjach pomocy technicznej.

/archi /QIfist nie można używać w tym samym compiland.W szczególności, jeśli nie używasz _controlfp do modyfikowania word kontroli FP, a następnie uruchomienia w czasie wykonywania kodu zestawów x 87 FPU kontroli word precyzyjną kontrolę pola do 53 bitów.W związku z tym co zmiennoprzecinkowych i podwójne operacji w wyrażeniu używa mantysy 53-bitowe i wykładnik 15-bitowej.Jednak każdej operacji pojedynczej precyzji SSE używa mantysy 24-bitowe i wykładnik 8-bitowe i SSE2 podwójnej precyzji operacji użyj mantysy 53-bitowe i wykładnik 11-bitowej.Aby uzyskać więcej informacji, zobacz _control87, _controlfp, __control87_2.Różnice te są możliwe w drzewie jedno wyrażenie, ale nie w przypadkach, gdzie po każdym wyrażenia podrzędnego chodzi o przypisywanie użytkownika.Rozważ następujące czynności:

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

Przed:

   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.

Aby ustawić tę opcję kompilatora dla AVX, AVX2, IA32, SSE lub SSE2 w programie Visual Studio

  1. Otwórz stron właściwości okno dialogowe dla projektu.Aby uzyskać więcej informacji, zobacz Porady: otwieranie stron właściwości projektów.

  2. Wybierz właściwości konfiguracji, C/C++ folder.

  3. Wybierz stronę właściwości Generowanie kodu.

  4. Modyfikuj ustawić instrukcji Włącz zwiększonych właściwości.

Aby programowo ustawić tę opcję kompilatora

Zobacz też

Informacje

/arch (minimalna architektura procesora)

Opcje kompilatora

Ustawianie opcji kompilatora