Compartilhar via


/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

ObservaçãoObservação

/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

  1. Abrir o Property Pages caixa de diálogo para o projeto. For more information, see Como: Abrir páginas de propriedades do projeto.

  2. Clique o C/C++ pasta.

  3. Clique na A geração de código página de propriedades.

  4. Modificar o Ativar avançado conjunto de instruções propriedade.

Para definir a opção de compilador /arch:AVX em Visual Studio

  1. Abrir o Property Pages caixa de diálogo para o projeto. For more information, see Como: Abrir páginas de propriedades do projeto.

  2. Clique o C/C++ pasta.

  3. Clique na a linha de comando página de propriedades.

  4. No Opções adicionais de caixa, adicionar /arch:AVX.

Para definir esta opção de compilador programaticamente

Consulte também

Referência

Opções do compilador

Definindo opções do compilador