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 ライブラリを使用できます。 |
関連トピック