Share via


DirectXMath 程式庫編譯器指示詞

編譯器指示詞會微調 DirectXMath 程式庫所使用的功能。

指示詞 描述
_XM_NO_INTRINSICS_ 定義_XM_NO_INTRINSICS_時,會實作 DirectXMath 作業,而不需使用任何平臺特定的內建函式。 相反地,DirectXMath 只會使用標準浮點運算。
根據預設,不會定義_XM_NO_INTRINSICS_。
這個指示詞會覆寫所有其他指示詞。 因此,建議您先檢查_XM_NO_INTRINSICS_,再判斷_XM_ARM_NEON_INTRINSICS_或_XM_SSE_INTRINSICS_的狀態。
_XM_SSE_INTRINSICS_ 定義_XM_SSE_INTRINSICS_時,程式碼會編譯成在支援這些指令集的平臺上使用支援的 SSE 和 SSE2。
提供 SSE 內建函式的 Windows 版本同時支援 SSE 和 SSE2。
_XM_SSE_INTRINSICS_不會影響不支援 SSE 和 SSE2 的系統。
根據預設,當使用者針對 Windows 平臺編譯時,會定義_XM_SSE_INTRINSICS_。
DirectXMath 會使用標準編譯器定義 (_M_IX86/ _M_AMD64) 來判斷 Windows x86 或 Windows x64 目標。
_XM_ARM_NEON_INTRINSICS_ 這表示 DirectXMath 實作使用 ARM-NEON 內建函式。 根據預設,當使用者針對 ARM / ARM64 平臺上的 Windows 進行編譯時,就會定義_XM_ARM_NEON_INTRINSICS_。 DirectXMath 會使用標準編譯器定義 (_M_ARM,_M_ARM64) 來判斷這個二進位目標。
ARM-NEON 內建函式支援是 DirectXMath 的新功能,XNAMath 2.x 不支援。
_XM_SSE3_INTRINSICS_ DirectXMath 3.10 的新功能。
當您指定此編譯器指示詞時,會實作 DirectXMath 函式,以在適用的情況下使用 SSE3 內建函式;否則會使用 SSE/SSE2。
_XM_SSE4_INTRINSICS_ DirectMath 3.09 的新功能。
當您指定此編譯器指示詞時,會實作 DirectXMath 函式,以在適用的情況下使用 SSE3 和 SSE4.1 內建函式;否則會使用 SSE/SSE2。 當您指定這個編譯器指示詞時,也表示_XM_SSE3_INTRINSICS_和_XM_SSE_INTRINSICS_。
_XM_AVX_INTRINSICS_ DirectXMath 3.09 的新功能。
使用 /arch:AVX 將會啟用此指示詞。
當您指定此編譯器指示詞時,會實作 DirectXMath 函式,以在適用的情況下使用 SSE3、SSE4.1 和 AVX 128 位內建函式;否則 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 的新功能。
當您指定此編譯器指示詞時,會實作 DirectXMath 函式,以使用 SSE3、SSE4.1、AVX 128 位和 F16C/CVT16 內建函式,否則 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,以一律停用它。
arm / ARM64 平臺或受控 C++ 上的 Windows 不支援__vectorcall。
_XM_SVML_INTRINSICS_ DirectXMath 3.16 的新功能。
使用 VS 2019 或更新版本時,這可讓程式庫使用適用于 x86/x64 的 Intel® Short Vector Matrix Library。

 

DirectXMath 程式設計參考