次の方法で共有


DirectXMath ライブラリコンパイラ ディレクティブ

コンパイラ ディレクティブは、DirectXMath ライブラリで使用される機能を調整します。

ディレクティブ 説明
_XM_NO_INTRINSICS_ _XM_NO_INTRINSICS_が定義されている場合、DirectXMath 操作はプラットフォーム固有の組み込みを使用せずに実装されます。 代わりに、DirectXMath では標準の浮動小数点演算のみが使用されます。
既定では、_XM_NO_INTRINSICS_は定義されていません。
このディレクティブは、他のすべてのディレクティブをオーバーライドします。 そのため、_XM_ARM_NEON_INTRINSICS_または_XM_SSE_INTRINSICS_の状態を決定する前に、_XM_NO_INTRINSICS_にチェックすることをお勧めします。
_XM_SSE_INTRINSICS_ _XM_SSE_INTRINSICS_が定義されている場合、これらの命令セットをサポートするプラットフォームで SSE と SSE2 をサポートするようにコードがコンパイルされます。
SSE 組み込みを提供する Windows バージョンでは、SSE と SSE2 の両方がサポートされています。
_XM_SSE_INTRINSICS_は、SSE と SSE2 をサポートしていないシステムには影響しません。
既定では、_XM_SSE_INTRINSICS_は、ユーザーが Windows プラットフォーム用にコンパイルするときに定義されます。
DirectXMath では、標準コンパイラで定義されている (_M_IX86/_M_AMD64) を使用して、Windows x86 または Windows x64 のターゲットが決定されます。
_XM_ARM_NEON_INTRINSICS_ これは、ARM-NEON 組み込みの DirectXMath 実装での使用を示します。 既定では、_XM_ARM_NEON_INTRINSICS_は、ユーザーが ARM/ARM64 プラットフォーム上の Windows 用にコンパイルするときに定義されます。 DirectXMath では、標準コンパイラ定義 (_M_ARM、_M_ARM64) を使用して、このバイナリ ターゲットを決定します。
ARM-NEON 組み込みのサポートは DirectXMath の新機能であり、XNAMath 2.x ではサポートされていません。
_XM_SSE3_INTRINSICS_ DirectXMath 3.10 の新機能。
このコンパイラ ディレクティブを指定すると、該当する場合に SSE3 組み込みを使用するように DirectXMath 関数が実装されます。それ以外の場合は、SSE/SSE2 を使用します。
_XM_SSE4_INTRINSICS_ DirectMath 3.09 の新機能。
このコンパイラ ディレクティブを指定すると、該当する場合は、SSE3 および SSE4.1 組み込みを使用するように DirectXMath 関数が実装されます。それ以外の場合は、SSE/SSE2 を使用します。 このコンパイラ ディレクティブを指定すると、_XM_SSE3_INTRINSICS_と_XM_SSE_INTRINSICS_も意味します。
_XM_AVX_INTRINSICS_ DirectXMath 3.09 の新機能。
/arch:AVX を使用すると、このディレクティブが有効になります。
このコンパイラ ディレクティブを指定すると、該当する場合は、SSE3、SSE4.1、および AVX 128 ビット組み込みを使用するように DirectXMath 関数が実装されます。それ以外の場合、DirectXMath は SSE/SSE2 を使用します。 このコンパイラ ディレクティブを指定すると、_XM_SSE3_INTRINSICS、_XM_SSE4_INTRINSICS_、_XM_SSE_INTRINSICS_も意味し、SSE3 命令の小さなサブセットが含まれます。
XM_AVX2_INTRINSICS_ DirectXMath 3.11 の新機能。
/arch:AVX2 を使用すると、このディレクティブが有効になります。 このコンパイラ ディレクティブを指定すると、DirectXMath 関数は、該当する場合は AVX2、F16C/CVT16、FMA3、AVX 128 ビット、SSE4.1、および SSE3 組み込みを使用します。 _XM_AVX2_INTRINSICS_を使用すると、_XM_F16C_INTRINSICS_、_XM_FMA3_INTRINSICS_、_XM_AVX_INTRINSICS_、_XM_SSE_INTRINSICS_、_XM_SSE3_INTRINSICS_、_XM_SSE4_INTRINSICS_が意味されます。
_XM_F16C_INTRINSICS_ DirectXMath 3.09 の新機能。
このコンパイラ ディレクティブを指定すると、該当する場合は、SSE3、SSE4.1、AVX 128 ビット、F16C/CVT16 組み込みを使用するように DirectXMath 関数が実装されます。それ以外の場合、DirectXMath は SSE/SSE2 を使用します。 _XM_F16C_INTRINSICS_を使用する場合は、_XM_AVX_INTRINSICS_、_XM_SSE_INTRINSICS_、_XM_SSE3_INTRINSICS_、_XM_SSE4_INTRINSICS_を意味します。
_XM_FMA3_INTRINSICS_ DirectXMath 3.11 の新機能。
このコンパイラ ディレクティブを指定すると、DirectXMath 関数は、必要に応じて SSE3、SSE4.1、AVX 128 ビット、FMA3 組み込みを使用します。それ以外の場合、DirectXMath は SSE/SSE2 を使用します。 _XM_FMA3_INTRINSICS_を使用する場合は、_XM_AVX_INTRINSICS_、_XM_SSE_INTRINSICS_、_XM_SSE3_INTRINSICS_、_XM_SSE4_INTRINSICS_を意味します。
_XM_VECTORCALL_ これにより、Windows x86 または Windows x64 ターゲットの__vectorcall呼び出し規則を使用できます。 コンパイラがこの機能をサポートしている場合、既定では _XM_VECTORCALL_=1 になります。 常に無効にするには、手動で _XM_VECTORCALL_=0 に設定できます。
__vectorcallは、ARM/ARM64 プラットフォームまたはマネージド C++ 上の Windows ではサポートされていません。
_XM_SVML_INTRINSICS_ DirectXMath 3.16 の新機能。
VS 2019 以降では、ライブラリで x86/x64 用の Intel® Short Vector Matrix ライブラリを使用できます。

 

DirectXMath プログラミング リファレンス