Freigeben über


Compilerdirektiven der DirectXMath-Bibliothek

Compilerdirektiven optimieren die Funktionalität, die die DirectXMath-Bibliothek verwendet.

Anweisung Beschreibung
_XM_NO_INTRINSICS_ Wenn _XM_NO_INTRINSICS_ definiert ist, werden DirectXMath-Vorgänge implementiert, ohne plattformspezifische Systemfunktionen zu verwenden. Stattdessen verwendet DirectXMath nur Standard-Gleitkommavorgänge.
Standardmäßig ist _XM_NO_INTRINSICS_ nicht definiert.
Diese Direktive setzt alle anderen Anweisungen außer Kraft. Daher wird empfohlen, nach _XM_NO_INTRINSICS_ zu suchen, bevor Sie die status von _XM_ARM_NEON_INTRINSICS_ oder _XM_SSE_INTRINSICS_ ermitteln.
_XM_SSE_INTRINSICS_ Wenn _XM_SSE_INTRINSICS_ definiert ist, wird Code kompiliert, um unterstützende SSE und SSE2 auf Plattformen zu verwenden, die diese Anweisungssätze unterstützen.
Die Windows-Versionen, die systeminterne SSE bereitstellen, unterstützen sowohl SSE als auch SSE2.
_XM_SSE_INTRINSICS_ hat keine Auswirkungen auf Systeme, die SSE und SSE2 nicht unterstützen.
Standardmäßig wird _XM_SSE_INTRINSICS_ definiert, wenn Benutzer für eine Windows-Plattform kompilieren.
DirectXMath verwendet den Standardcompiler defines (_M_IX86/_M_AMD64), um Windows x86- oder Windows x64-Ziele zu bestimmen.
_XM_ARM_NEON_INTRINSICS_ Dies gibt an, dass die DirectXMath-Implementierung die intrinsischen ARM-NEON-Funktionen verwendet. Standardmäßig wird _XM_ARM_NEON_INTRINSICS_ definiert, wenn Benutzer für eine Windows on ARM/ARM64-Plattform kompilieren. DirectXMath verwendet den Standardcompiler define (_M_ARM, _M_ARM64), um dieses binäre Ziel zu bestimmen.
Die unterstützung von ARM-NEON ist neu in DirectXMath und wird von XNAMath 2.x nicht unterstützt.
_XM_SSE3_INTRINSICS_ Neu für DirectXMath 3.10.
Wenn Sie diese Compilerdirektive angeben, werden DirectXMath-Funktionen implementiert, um gegebenenfalls SSE3-systeminterne SSE3-Funktionen zu verwenden. andernfalls wird SSE/SSE2 verwendet.
_XM_SSE4_INTRINSICS_ Neu für DirectMath 3.09.
Wenn Sie diese Compilerdirektive angeben, werden DirectXMath-Funktionen implementiert, um gegebenenfalls die systeminternen SSE3- und SSE4.1-Systemfunktionen zu nutzen. andernfalls wird SSE/SSE2 verwendet. Wenn Sie diese Compilerdirektive angeben, impliziert dies auch _XM_SSE3_INTRINSICS_ und _XM_SSE_INTRINSICS_.
_XM_AVX_INTRINSICS_ Neu für DirectXMath 3.09.
Die Verwendung von /arch:AVX aktiviert diese Direktive.
Wenn Sie diese Compilerdirektive angeben, werden DirectXMath-Funktionen implementiert, um die systeminternen SSE3-, SSE4.1- und AVX-128-Bit-systeminternen SSE3-, SSE4.1- und AVX-128-Bit-Funktionen zu verwenden. andernfalls verwendet DirectXMath SSE/SSE2. Wenn Sie diese Compilerdirektive angeben, impliziert dies auch _XM_SSE3_INTRINSICS, _XM_SSE4_INTRINSICS_ und _XM_SSE_INTRINSICS_ und enthält eine kleine Teilmenge von SSE3-Anweisungen.
XM_AVX2_INTRINSICS_ Neu für DirectXMath 3.11.
Die Verwendung von /arch:AVX2 aktiviert diese Direktive. Wenn Sie diese Compilerdirektive angeben, verwenden directXMath-Funktionen ggf. die systeminternen AVX2-, F16C/CVT16-, FMA3-, AVX 128-Bit-, SSE4.1- und SSE3-Systemfunktionen. Wenn Sie _XM_AVX2_INTRINSICS_ verwenden, bedeutet dies _XM_F16C_INTRINSICS_, _XM_FMA3_INTRINSICS_, _XM_AVX_INTRINSICS_, _XM_SSE_INTRINSICS_, _XM_SSE3_INTRINSICS_ und _XM_SSE4_INTRINSICS_.
_XM_F16C_INTRINSICS_ Neu für DirectXMath 3.09.
Wenn Sie diese Compilerdirektive angeben, werden DirectXMath-Funktionen implementiert, um ggf. die systeminternen SSE3-, SSE4.1-, AVX-128-Bit- und F16C/CVT16-Systemfunktionen zu verwenden. andernfalls verwendet DirectXMath SSE/SSE2. Wenn Sie _XM_F16C_INTRINSICS_ verwenden, bedeutet dies _XM_AVX_INTRINSICS_, _XM_SSE_INTRINSICS_, _XM_SSE3_INTRINSICS_ und _XM_SSE4_INTRINSICS_.
_XM_FMA3_INTRINSICS_ Neu für DirectXMath 3.11.
Wenn Sie diese Compilerdirektive angeben, verwenden directXMath-Funktionen ggf. die systeminternen SSE3-, SSE4.1-, AVX-128-Bit- und FMA3-Systemfunktionen. andernfalls verwendet DirectXMath SSE/SSE2. Wenn Sie _XM_FMA3_INTRINSICS_ verwenden, bedeutet dies _XM_AVX_INTRINSICS_, _XM_SSE_INTRINSICS_, _XM_SSE3_INTRINSICS_ und _XM_SSE4_INTRINSICS_.
_XM_VECTORCALL_ Dies ermöglicht die Verwendung der __vectorcall Aufrufkonvention für Windows x86- oder Windows x64-Ziele. Standardmäßig wird _XM_VECTORCALL_=1 verwendet, wenn der Compiler dieses Feature unterstützt. Sie können sie manuell auf _XM_VECTORCALL_=0 festlegen, um sie immer zu deaktivieren.
__vectorcall wird für windows on ARM/ARM64 platform or Managed C++ nicht unterstützt.
_XM_SVML_INTRINSICS_ Neu für DirectXMath 3.16.
Mit VS 2019 oder höher kann die Bibliothek die Intel® Short Vector Matrix Library für x86/x64 verwenden.

 

DirectXMath-Programmierreferenz