Windows Dev Center

DirectXMath Library Compiler Directives

Compiler directives tune the functionality that the DirectXMath library uses.


When _XM_NO_INTRINSICS_ is defined, DirectXMath operations are implemented without using any platform-specific intrinsics. Instead, DirectXMath uses only standard floating point operations.

By default, _XM_NO_INTRINSICS_ is not defined.

Note  This directive overrides all other directives. Therefore, we recommend that you check for _XM_NO_INTRINSICS_ before you determine the status of _XM_ARM_NEON_INTRINSICS_ or _XM_SSE_INTRINSICS_.

When _XM_SSE_INTRINSICS_ is defined, code is compiled to use supporting SSE and SSE2 on platforms that support these instruction sets.

The Windows versions providing SSE intrinsics support both SSE and SSE2.

_XM_SSE_INTRINSICS_ has no effect on systems that do not support SSE and SSE2.

By default, _XM_SSE_INTRINSICS_ is defined when users compile for a Windows platform.

Note  DirectXMath uses the standard compiler defines (_M_IX86 / _M_AMD64) to determine Windows x86 or Windows x64 targets.
_XM_ARM_NEON_INTRINSICS_This indicates the DirectXMath implementation uses of the ARM-NEON intrinsics. By defualt, _XM_ARM_NEON_INTRINSICS_ is defined when users compile for a Windows RT platform. DirectXMath uses the standard compiler define (_M_ARM) to determine this binary target.
Note  ARM-NEON intrinsics support is new to DirectXMath and is not supported by XNAMath 2.x.

New for Windows 8.1


This enables the use of the new __vectorcall calling convention for Windows x86 or Windows x64 targets. It defaults to _XM_VECTORCALL_=1 when the compiler supports this feature. You can manually set it to _XM_VECTORCALL_=0 to always disable it.

Note  __vectorcall is not supported for the Windows RT platform or Managed C++.




Community Additions

© 2015 Microsoft