Compartilhar via


/arch (x86)

Especifica a arquitetura para a geração de código em x.Consulte também /arch (x64) e /arch (ARM).

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

Argumentos

  • /arch:IA32
    Não especifica qualquer instrução aprimorado e também especifica x87 para cálculos de ponto flutuante.

  • /arch:SSE
    Permite o uso de instruções do SSE.

  • /arch:SSE2
    Permite o uso das instruções e SSE2.Esta é a instrução padrão nas plataformas x86 se nenhuma opção de /arch é especificado.

  • /arch:AVX
    Permite o uso Intel avançar instruções das extensões do vetor.

Comentários

SSE as instruções e SSE2 existem em vários processadores Intel e em AMD de.As instruções de AVX existem na ponte processadores Intel Sandy e em processadores de escavadora de AMD.

A macro de _M_IX86_FP indica que, se houver, a opção de compilador /arch foi usada.Para obter mais informações, consulte Macros predefinidas.

O otimizador escolher quando e como usar o SSE as instruções e SSE2 /arch quando é especificado.Usa SSE e as instruções e SSE2 para quaisquer cálculos de ponto flutuante escalares quando determina que é mais rápido usar as instruções SSE/SSE2 e os registros em vez da pilha de registro x87 de ponto flutuante.Como resultado, o código irá realmente uma mistura de x87 e de SSE/SSE2 para cálculos de ponto flutuante.Além disso, com /arch:SSE2, as instruções e SSE2 podem ser usadas para algumas operações de 64 bits inteiro.

Além de usar do SSE e instruções SSE2, o compilador também usa outras instruções presentes nas revisões do processador que suportam SSE e SSE2.Um exemplo é a instrução de CMOV que apareceu primeiro em para revisão de Pentium de processadores Intel.

Quando você usa /clr para criar, /arch não tem efeito na geração de código para funções gerenciados.afeta de**/arch** somente a geração de código para funções nativos.

/arch e /QIfist não podem ser usados no mesmo compiland.Em particular, se você não usar _controlfp para alterar a palavra de controle de FP, então o código define a inicialização de tempo de execução do campo precisão- controle do word de controle de x87 FPU a 53 bits.Como consequência, cada flutuante e operação de double em uma expressão usam um significand de 53 bits e um expoente de 15 bits.No entanto, cada operação de precisão simples do SSE usa um significand de 24 bits e um expoente de 8 bits, e as operações SSE2 de precisão dupla usam um significand de 53 bits e um expoente de 11 bits.Para obter mais informações, consulte _control87, _controlfp, __control87_2.Essas diferenças são possíveis em uma árvore de expressão, mas não em casos onde uma atribuição de usuário é involvida após cada subexpressão.Considere o seguinte:

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

X:

   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 não altera os bits do controle de MXCSR.Como consequência, com /arch:SSE2, qualquer funcionalidade que depender do uso de controlfp será interrompido.

Para definir essa opção de compilador para o SSE ou SSE2 no Visual Studio

  1. Abra a caixa de diálogo de Páginas de Propriedade para o projeto.Para obter mais informações, consulte Como: abrir páginas de propriedades do projeto.

  2. Selecione a pasta de C/C++ .

  3. Selecione a página de propriedades de Geração de Código .

  4. Altere a propriedade de Habilita Conjunto de Instruções Avançado .

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

  1. Abra a caixa de diálogo de Páginas de Propriedade para o projeto.Para obter mais informações, consulte Como: abrir páginas de propriedades do projeto.

  2. Selecione a pasta de C/C++ .

  3. Selecione a página de propriedades de Linha de comando .

  4. Na caixa de Opções Adicionais , adicione /arch: AVX.

Para definir essa opção de compilador

Consulte também

Referência

/arch (arquitetura mínima de CPU)

Opções do compilador

Configurando opções de compilador