/arch (x86)
Specifica l'architettura per la generazione di codice su x86.Vedere anche /arch (x64) e /arch (ARM).
/arch:[IA32|SSE|SSE2|AVX]
Argomenti
/arch:IA32
Non specifica le istruzioni avanzate e specifica inoltre x87 per i calcoli a virgola mobile./arch:SSE
Abilita l'utilizzo di istruzioni SSE di./arch:SSE2
Abilita l'utilizzo di istruzioni SSE2.Si tratta dell'istruzione predefinita su piattaforme x86 se nessuna opzione di /arch è specificata./arch:AVX
Consente l'utilizzo Intel avanzate di istruzioni delle estensioni vettoriali.
Note
Le istruzioni SSE e SSE2 sono disponibili in vari processori Intel e AMD.Le istruzioni AVX esistono nei processori Intel Sandy Bridge e AMD Bulldozer.
La macro di _M_IX86_FP indica quale, se presente, l'opzione del compilatore di /arch è stato utilizzato.Per ulteriori informazioni, vedere Macro predefinite.
L'utilità di ottimizzazione decide quando e come utilizzare le istruzioni SSE e SSE2 quando /arch è specificato.Vengono utilizzati SSE e SSE2 per i calcoli a virgola mobile scalari quando determina che è più veloce utilizzare istruzioni SSE/SSE2 e registra anziché lo stack di registro a virgola mobile x87.Di conseguenza, nel codice verrà utilizzata una combinazione di entrambe le istruzioni x87 e SSE/SSE2 per i calcoli a virgola mobile.Inoltre, con /arch:SSE2, SSE2 possono essere utilizzate per alcune operazioni Integer a 64 bit.
Oltre alle istruzioni SSE e SSE2, il compilatore utilizza anche altre istruzioni presenti nelle revisioni del processore che supportano SSE e SSE2.Un esempio è rappresentato dall'istruzione CMOV, introdotta per la prima volta nella revisione Pentium Pro dei processori Intel.
Quando si utilizza /clr per compilare, /arch non influisce sulla generazione di codice per le funzioni gestite./arch influisce solo sulla generazione di codice per le funzioni native.
/arch e /QIfist non possono essere utilizzati nello stesso modulo.In particolare, se non si utilizza _controlfp per modificare la parola di controllo di FP, gli insiemi di codice di avvio di runtime del campo di precisione- controllo di parola di controllo x87 FPU a 53 bit.Di conseguenza, ogni valore float e double operazione in un'espressione utilizza un significand a 53 bit e un esponente a 15 bit.Tuttavia, ogni precisione singola operazione di SSE utilizza i 24 significand di bit e un esponente a 8 bit e le operazioni a precisione doppia SSE2 utilizzano un significand a 53 bit e un esponente a 11 bit.Per ulteriori informazioni, vedere _control87, _controlfp, __control87_2.Queste differenze sono possibili in una struttura ad albero dell'espressione, ma non nei casi in cui è presente un'assegnazione dell'utente dopo ciascuna sottoespressione.Si consideri quanto segue:
r = f1 * f2 + d; // Different results are possible on SSE/SSE2.
invece di:
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 non modifica i bit di controllo MXCSR.Di conseguenza, con /arch:SSE2, qualsiasi funzionalità che dipende dall'utilizzo di controlfp verrà interrotta.
Per impostare questa opzione del compilatore per SSE o SSE2 in Visual Studio
Aprire la finestra di dialogo Pagine delle proprietà del progetto.Per ulteriori informazioni, vedere Procedura: aprire le pagine delle proprietà dei progetti.
Selezionare la cartella C/C++.
Selezionare la pagina Generazione codice.
Modificare la proprietà Attiva set di istruzioni avanzate.
Per impostare l'opzione del compilatore /arch:AVX in Visual Studio
Aprire la finestra di dialogo Pagine delle proprietà del progetto.Per ulteriori informazioni, vedere Procedura: aprire le pagine delle proprietà dei progetti.
Selezionare la cartella C/C++.
Selezionare la pagina delle proprietà Riga di comando.
Nella casella Opzioni aggiuntive, aggiungere /arch:AVX.
Per impostare l'opzione del compilatore a livello di codice
- Vedere EnableEnhancedInstructionSet.