Compartilhar via


Diretivas do compilador da Biblioteca DirectXMath

As diretivas do compilador ajustam a funcionalidade que a biblioteca DirectXMath usa.

Diretiva Descrição
_XM_NO_INTRINSICS_ Quando _XM_NO_INTRINSICS_ é definido, as operações DirectXMath são implementadas sem usar nenhum intrínseco específico da plataforma. Em vez disso, o DirectXMath usa apenas operações de ponto flutuante padrão.
Por padrão, _XM_NO_INTRINSICS_ não está definido.
Essa diretiva substitui todas as outras diretivas. Portanto, recomendamos que você marcar para _XM_NO_INTRINSICS_ antes de determinar a status de _XM_ARM_NEON_INTRINSICS_ ou _XM_SSE_INTRINSICS_.
_XM_SSE_INTRINSICS_ Quando _XM_SSE_INTRINSICS_ é definido, o código é compilado para usar SSE e SSE2 de suporte em plataformas que dão suporte a esses conjuntos de instruções.
As versões do Windows que fornecem intrínsecos SSE dão suporte à SSE e à SSE2.
_XM_SSE_INTRINSICS_ não tem efeito sobre sistemas que não dão suporte a SSE e SSE2.
Por padrão, _XM_SSE_INTRINSICS_ é definido quando os usuários compilam para uma plataforma Windows.
O DirectXMath usa o compilador padrão definido (_M_IX86/_M_AMD64) para determinar destinos do Windows x86 ou Windows x64.
_XM_ARM_NEON_INTRINSICS_ Isso indica os usos de implementação directXMath dos intrínsecos ARM-NEON. Por padrão, _XM_ARM_NEON_INTRINSICS_ é definido quando os usuários compilam para uma plataforma Windows no ARM/ARM64. O DirectXMath usa a definição do compilador padrão (_M_ARM, _M_ARM64) para determinar esse destino binário.
O suporte a intrínsecos ARM-NEON é novo no DirectXMath e não tem suporte do XNAMath 2.x.
_XM_SSE3_INTRINSICS_ Novo para DirectXMath 3.10.
Quando você especifica essa diretiva do compilador, as funções DirectXMath são implementadas para usar intrínsecos SSE3 quando aplicável; caso contrário, ele usa SSE/SSE2.
_XM_SSE4_INTRINSICS_ Novo para DirectMath 3.09.
Quando você especifica essa diretiva do compilador, as funções DirectXMath são implementadas para usar intrínsecos SSE3 e SSE4.1 quando aplicável; caso contrário, ele usa SSE/SSE2. Quando você especifica essa diretiva do compilador, ela também implica _XM_SSE3_INTRINSICS_ e _XM_SSE_INTRINSICS_.
_XM_AVX_INTRINSICS_ Novo para DirectXMath 3.09.
O uso de /arch:AVX habilitará essa diretiva.
Quando você especifica essa diretiva do compilador, as funções DirectXMath são implementadas para usar intrínsecos de SSE3, SSE4.1 e AVX de 128 bits, quando aplicável; caso contrário, o DirectXMath usa SSE/SSE2. Quando você especifica essa diretiva do compilador, ela também implica _XM_SSE3_INTRINSICS, _XM_SSE4_INTRINSICS_ e _XM_SSE_INTRINSICS_ e inclui um pequeno subconjunto de instruções SSE3.
XM_AVX2_INTRINSICS_ Novo para DirectXMath 3.11.
O uso de /arch:AVX2 habilita essa diretiva. Quando você especifica essa diretiva do compilador, as funções DirectXMath usam intrínsecos AVX2, F16C/CVT16, FMA3, AVX de 128 bits, SSE4.1 e SSE3, quando aplicável. Quando você usa _XM_AVX2_INTRINSICS_, isso implica _XM_F16C_INTRINSICS_, _XM_FMA3_INTRINSICS_, _XM_AVX_INTRINSICS_, _XM_SSE_INTRINSICS_, _XM_SSE3_INTRINSICS_ e _XM_SSE4_INTRINSICS_.
_XM_F16C_INTRINSICS_ Novo para DirectXMath 3.09.
Quando você especifica essa diretiva do compilador, as funções DirectXMath são implementadas para usar intrínsecos SSE3, SSE4.1, AVX de 128 bits e F16C/CVT16 quando aplicável; caso contrário, o DirectXMath usa SSE/SSE2. Quando você usa _XM_F16C_INTRINSICS_, isso implica _XM_AVX_INTRINSICS_, _XM_SSE_INTRINSICS_, _XM_SSE3_INTRINSICS_ e _XM_SSE4_INTRINSICS_.
_XM_FMA3_INTRINSICS_ Novo para DirectXMath 3.11.
Quando você especificar essa diretiva do compilador, as funções DirectXMath usarão intrínsecos SSE3, SSE4.1, AVX de 128 bits e FMA3, quando aplicável; caso contrário, o DirectXMath usa SSE/SSE2. Quando você usa _XM_FMA3_INTRINSICS_, isso implica _XM_AVX_INTRINSICS_, _XM_SSE_INTRINSICS_, _XM_SSE3_INTRINSICS_ e _XM_SSE4_INTRINSICS_.
_XM_VECTORCALL_ Isso permite o uso da convenção de chamada __vectorcall para destinos windows x86 ou Windows x64. O padrão é _XM_VECTORCALL_=1 quando o compilador dá suporte a esse recurso. Você pode defini-lo manualmente como _XM_VECTORCALL_=0 para sempre desabilitá-lo.
__vectorcall não tem suporte para o Windows na plataforma ARM/ARM64 ou no C++Gerenciado.
_XM_SVML_INTRINSICS_ Novo para DirectXMath 3.16.
Com o VS 2019 ou posterior, isso permite que a biblioteca use a Biblioteca de Matriz de Vetor Curto intel® para x86/x64.

 

Referência de programação DirectXMath