Direttive del compilatore DirectXMath Library

Le direttive del compilatore ottimizzano la funzionalità usata dalla libreria DirectXMath.

Direttiva Descrizione
_XM_NO_INTRINSICS_ Quando viene definito _XM_NO_INTRINSICS_, le operazioni DirectXMath vengono implementate senza usare elementi intrinseci specifici della piattaforma. DirectXMath usa invece solo operazioni a virgola mobile standard.
Per impostazione predefinita, _XM_NO_INTRINSICS_ non è definito.
Questa direttiva sostituisce tutte le altre direttive. È pertanto consigliabile verificare la _XM_NO_INTRINSICS_ prima di determinare lo stato di _XM_ARM_NEON_INTRINSICS_ o _XM_SSE_INTRINSICS_.
_XM_SSE_INTRINSICS_ Quando _XM_SSE_INTRINSICS_ è definito, il codice viene compilato per usare il supporto di SSE e SSE2 nelle piattaforme che supportano questi set di istruzioni.
Le versioni di Windows che forniscono intrinseche SSE supportano sia SSE che SSE2.
_XM_SSE_INTRINSICS_ non ha alcun effetto sui sistemi che non supportano SSE e SSE2.
Per impostazione predefinita, _XM_SSE_INTRINSICS_ viene definito quando gli utenti compilano per una piattaforma Windows.
DirectXMath usa il compilatore standard definisce (_M_IX86/_M_AMD64) per determinare le destinazioni Windows x86 o Windows x64.
_XM_ARM_NEON_INTRINSICS_ Ciò indica l'implementazione directXMath che usa gli intrinseci ARM-NEON. Per impostazione predefinita, _XM_ARM_NEON_INTRINSICS_ viene definito quando gli utenti vengono compilati per una piattaforma Windows in ARM/ARM64. DirectXMath usa la definizione standard del compilatore (_M_ARM, _M_ARM64) per determinare questa destinazione binaria.
Il supporto intrinseco ARM-NEON è nuovo a DirectXMath e non è supportato da XNAMath 2.x.
_XM_SSE3_INTRINSICS_ Novità per DirectXMath 3.10.
Quando si specifica questa direttiva del compilatore, le funzioni DirectXMath vengono implementate per usare gli intrinseci SSE3, se applicabile; in caso contrario, usa SSE/SSE2.
_XM_SSE4_INTRINSICS_ Novità per DirectMath 3.09.
Quando si specifica questa direttiva del compilatore, le funzioni DirectXMath vengono implementate per usare SSE3 e SSE4.1 intrinseche, se applicabile; in caso contrario, usa SSE/SSE2. Quando si specifica questa direttiva del compilatore, implica anche _XM_SSE3_INTRINSICS_ e _XM_SSE_INTRINSICS_.
_XM_AVX_INTRINSICS_ Novità per DirectXMath 3.09.
L'uso di /arch:AVX abiliterà questa direttiva.
Quando si specifica questa direttiva del compilatore, le funzioni DirectXMath vengono implementate per l'uso di SSE3, SSE4.1 e intrinseci AVX a 128 bit, se applicabile; in caso contrario DirectXMath usa SSE/SSE2. Quando si specifica questa direttiva del compilatore, implica anche _XM_SSE3_INTRINSICS, _XM_SSE4_INTRINSICS_ e _XM_SSE_INTRINSICS_ e include un piccolo subset di istruzioni SSE3.
XM_AVX2_INTRINSICS_ Novità per DirectXMath 3.11.
L'uso di /arch:AVX2 abilita questa direttiva. Quando si specifica questa direttiva del compilatore, le funzioni DirectXMath usano AVX2, F16C/CVT16, FMA3, AVX 128 bit, SSE4.1 e SSE3 intrinseci, se applicabile. Quando si usa _XM_AVX2_INTRINSICS_, implica _XM_F16C_INTRINSICS_, _XM_FMA3_INTRINSICS_, _XM_AVX_INTRINSICS_, _XM_SSE_INTRINSICS_, _XM_SSE3_INTRINSICS_ e _XM_SSE4_INTRINSICS_.
_XM_F16C_INTRINSICS_ Novità per DirectXMath 3.09.
Quando si specifica questa direttiva del compilatore, le funzioni DirectXMath vengono implementate per usare gli intrinseci SSE3, SSE4.1, AVX 128 bit e F16C/CVT16, se applicabile; in caso contrario DirectXMath usa SSE/SSE2. Quando si usa _XM_F16C_INTRINSICS_, implica _XM_AVX_INTRINSICS_, _XM_SSE_INTRINSICS_, _XM_SSE3_INTRINSICS_ e _XM_SSE4_INTRINSICS_.
_XM_FMA3_INTRINSICS_ Novità per DirectXMath 3.11.
Quando si specifica questa direttiva del compilatore, le funzioni DirectXMath useranno SSE3, SSE4.1, AVX 128 bit e gli intrinseci FMA3 se applicabili; in caso contrario DirectXMath usa SSE/SSE2. Quando si usa _XM_FMA3_INTRINSICS_, implica _XM_AVX_INTRINSICS_, _XM_SSE_INTRINSICS_, _XM_SSE3_INTRINSICS_ e _XM_SSE4_INTRINSICS_.
_XM_VECTORCALL_ Ciò consente l'uso della convenzione di chiamata __vectorcall per le destinazioni Windows x86 o Windows x64. Il valore predefinito è _XM_VECTORCALL_=1 quando il compilatore supporta questa funzionalità. È possibile impostarla manualmente su _XM_VECTORCALL_=0 per disabilitarla sempre.
__vectorcall non è supportato per la piattaforma Windows in ARM/ARM64 o C++gestita.
_XM_SVML_INTRINSICS_ Novità per DirectXMath 3.16.
Con VS 2019 o versioni successive, la libreria consente di usare la libreria Intel® Short Vector Matrix Library per x86/x64.

 

Informazioni di riferimento sulla programmazione DirectXMath