Directives du compilateur de bibliothèque DirectXMath

Les directives du compilateur ajustent les fonctionnalités que la bibliothèque DirectXMath utilise.

Directive Description
_XM_NO_INTRINSICS_ Lorsque _XM_NO_INTRINSICS_ est défini, les opérations DirectXMath sont implémentées sans utiliser d’intrinsèques spécifiques à la plateforme. Au lieu de cela, DirectXMath utilise uniquement des opérations à virgule flottante standard.
Par défaut, _XM_NO_INTRINSICS_ n’est pas défini.
Cette directive remplace toutes les autres directives. Par conséquent, nous vous recommandons de case activée pour _XM_NO_INTRINSICS_ avant de déterminer le status de _XM_ARM_NEON_INTRINSICS_ ou de _XM_SSE_INTRINSICS_.
_XM_SSE_INTRINSICS_ Lorsque _XM_SSE_INTRINSICS_ est défini, le code est compilé pour utiliser la prise en charge de SSE et SSE2 sur les plateformes qui prennent en charge ces jeux d’instructions.
Les versions de Windows fournissant des intrinsèques SSE prennent en charge SSE et SSE2.
_XM_SSE_INTRINSICS_ n’a aucun effet sur les systèmes qui ne prennent pas en charge SSE et SSE2.
Par défaut, _XM_SSE_INTRINSICS_ est défini lorsque les utilisateurs compilent pour une plateforme Windows.
DirectXMath utilise les définitions du compilateur standard (_M_IX86/_M_AMD64) pour déterminer les cibles Windows x86 ou Windows x64.
_XM_ARM_NEON_INTRINSICS_ Cela indique les utilisations de l’implémentation DirectXMath des intrinsèques ARM-NEON. Par défaut, _XM_ARM_NEON_INTRINSICS_ est défini lorsque les utilisateurs compilent pour une plateforme Windows sur ARM/ARM64. DirectXMath utilise la définition du compilateur standard (_M_ARM, _M_ARM64) pour déterminer cette cible binaire.
La prise en charge intrinsèque d’ARM-NEON est nouvelle dans DirectXMath et n’est pas prise en charge par XNAMath 2.x.
_XM_SSE3_INTRINSICS_ Nouveauté de DirectXMath 3.10.
Lorsque vous spécifiez cette directive de compilateur, les fonctions DirectXMath sont implémentées pour utiliser les intrinsèques SSE3 le cas échéant ; sinon, il utilise SSE/SSE2.
_XM_SSE4_INTRINSICS_ Nouveauté de DirectMath 3.09.
Lorsque vous spécifiez cette directive de compilateur, les fonctions DirectXMath sont implémentées pour utiliser les intrinsèques SSE3 et SSE4.1 le cas échéant ; sinon, il utilise SSE/SSE2. Lorsque vous spécifiez cette directive de compilateur, cela implique également _XM_SSE3_INTRINSICS_ et _XM_SSE_INTRINSICS_.
_XM_AVX_INTRINSICS_ Nouveauté de DirectXMath 3.09.
L’utilisation de /arch:AVX active cette directive.
Lorsque vous spécifiez cette directive de compilateur, les fonctions DirectXMath sont implémentées pour utiliser les intrinsèques SSE3, SSE4.1 et AVX 128 bits, le cas échéant ; sinon, DirectXMath utilise SSE/SSE2. Lorsque vous spécifiez cette directive de compilateur, elle implique également _XM_SSE3_INTRINSICS, _XM_SSE4_INTRINSICS_ et _XM_SSE_INTRINSICS_, et inclut un petit sous-ensemble d’instructions SSE3.
XM_AVX2_INTRINSICS_ Nouveauté de DirectXMath 3.11.
L’utilisation de /arch:AVX2 active cette directive. Lorsque vous spécifiez cette directive de compilateur, les fonctions DirectXMath utilisent les intrinsèques AVX2, F16C/CVT16, FMA3, AVX 128 bits, SSE4.1 et SSE3 le cas échéant. Lorsque vous utilisez _XM_AVX2_INTRINSICS_, cela implique _XM_F16C_INTRINSICS_, _XM_FMA3_INTRINSICS_, _XM_AVX_INTRINSICS_, _XM_SSE_INTRINSICS_, _XM_SSE3_INTRINSICS_ et _XM_SSE4_INTRINSICS_.
_XM_F16C_INTRINSICS_ Nouveauté de DirectXMath 3.09.
Lorsque vous spécifiez cette directive de compilateur, les fonctions DirectXMath sont implémentées pour utiliser les intrinsèques SSE3, SSE4.1, AVX 128 bits et F16C/CVT16 le cas échéant ; sinon, DirectXMath utilise SSE/SSE2. Lorsque vous utilisez _XM_F16C_INTRINSICS_, cela implique _XM_AVX_INTRINSICS_, _XM_SSE_INTRINSICS_, _XM_SSE3_INTRINSICS_ et _XM_SSE4_INTRINSICS_.
_XM_FMA3_INTRINSICS_ Nouveauté de DirectXMath 3.11.
Lorsque vous spécifiez cette directive de compilateur, les fonctions DirectXMath utilisent les intrinsèques SSE3, SSE4.1, AVX 128 bits et FMA3 le cas échéant ; sinon, DirectXMath utilise SSE/SSE2. Lorsque vous utilisez _XM_FMA3_INTRINSICS_, cela implique _XM_AVX_INTRINSICS_, _XM_SSE_INTRINSICS_, _XM_SSE3_INTRINSICS_ et _XM_SSE4_INTRINSICS_.
_XM_VECTORCALL_ Cela permet d’utiliser la convention d’appel __vectorcall pour les cibles Windows x86 ou Windows x64. La valeur par défaut est _XM_VECTORCALL_=1 lorsque le compilateur prend en charge cette fonctionnalité. Vous pouvez le définir manuellement sur _XM_VECTORCALL_=0 pour toujours le désactiver.
__vectorcall n’est pas pris en charge pour la plateforme Windows sur ARM/ARM64 ou Managed C++.
_XM_SVML_INTRINSICS_ Nouveauté de DirectXMath 3.16.
Avec VS 2019 ou version ultérieure, cela permet à la bibliothèque d’utiliser la bibliothèque de matrices vectorielles courtes Intel® pour x86/x64.

 

Informations de référence sur la programmation DirectXMath