/arch (arquitetura de CPU mínimo)
Especifica a arquitetura para geração de código usando as extensões SSE (Streaming SIMD), Streaming SIMD Extensions 2 (SSE2) e instruções de extensão de vetor avançado (AVX).
/arch:[SSE|SSE2|AVX]
Comentários
![]() |
---|
/arch:SSEe /arch:SSE2 estão somente disponíveis quando você compila para o x 86 plataforma. /arch:AVXsó está disponível para x86 e x64 plataformas. Esta opção de compilador não está disponível quando você compila para Itanium. |
As instruções SSE e SSE2 existem em vários processadores Intel e AMD. As instruções de AVX existem nos processadores de ponte de Sandy Intel e AMD Bulldozer.
/arch:SSEpermite que o compilador usar as instruções SSE. /arch:SSE2permite que o compilador usar as instruções SSE2. /arch:AVXInstrui o compilador para usar as codificações de instrução AVX.
_M_IX86_FPindica que, se houver, /arch opção de compilador foi usada. For more information, see Predefined Macros.
O otimizador escolhe quando e como usar as instruções SSE e SSE2 quando /arch é especificado. As instruções SSE e SSE2 são usadas para alguns cálculos de ponto flutuante de escalares, quando for determinado que é mais rápido para usar as instruções SSE/SSE2 e pilha de registro de registros em vez do 87 x ponto flutuante. Como resultado, seu código irá usar uma mistura de x 87 e o SSE/SSE2 para cálculos de ponto flutuante. Além disso, com /arch:SSE2, instruções SSE2 podem ser usadas para algumas operações de número inteiro de 64 bits.
Além de usar as instruções SSE e SSE2, o compilador também usa outras instruções que estão presentes nas revisões de processadores que suportam SSE e SSE2. Um exemplo é a instrução de CMOV que apareceu primeiro a revisão do Pentium Pro Processadores Intel.
Quando você compilar usando /clr, /arch não tem efeito sobre a geração de código para funções gerenciadas. /archafeta somente a geração de código para funções nativas.
/arche /QIfist não pode ser usado o mesmo compiland.
Em particular, se o usuário não usa _controlfp para modificar a palavra de controle do FP, então o código de inicialização de tempo de execução será definido o x 87 FPU controle controle de precisão campo do word para 53-bits. Portanto, cada float e double operação em uma expressão ocorrem com um significando de 53 bits e um expoente de 15 bits. No entanto, cada operação de precisão única SSE usa um expoente de 8/significando-bit de 24 bits e operações de precisão dupla de SSE2 usam um expoente de 11/significando-bit de 53 bits. For more information, see _control87, _controlfp, __control87_2.
Essas diferenças são possíveis na árvore de uma expressão, mas não em casos onde uma atribuição de usuário está envolvida após cada subexpressão.
r = f1 * f2 + d; // Different results are possible on SSE/SSE2.
Contra:
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.
controlfpnão altera os bits de controle MXCSR. Portanto, com /arch:SSE2, qualquer funcionalidade que depende do uso de controlfp será quebrado.
Para definir esta opção de compilador para o SSE e SSE2 no Visual Studio
Abrir o Property Pages caixa de diálogo para o projeto. For more information, see Como: Abrir páginas de propriedades do projeto.
Clique o C/C++ pasta.
Clique na A geração de código página de propriedades.
Modificar o Ativar avançado conjunto de instruções propriedade.
Para definir a opção de compilador /arch:AVX em Visual Studio
Abrir o Property Pages caixa de diálogo para o projeto. For more information, see Como: Abrir páginas de propriedades do projeto.
Clique o C/C++ pasta.
Clique na a linha de comando página de propriedades.
No Opções adicionais de caixa, adicionar /arch:AVX.