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. |
Zugehörige Themen