Директивы компилятора библиотеки 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 на платформах, поддерживающих эти наборы инструкций. Версии Windows, предоставляющие встроенные функции SSE, поддерживают как SSE, так и SSE2. _XM_SSE_INTRINSICS_ не влияет на системы, которые не поддерживают SSE и SSE2. По умолчанию _XM_SSE_INTRINSICS_ определяется при компиляции пользователей для платформы Windows. DirectXMath использует стандартный компилятор определяет (_M_IX86 / _M_AMD64) для определения целевых объектов Windows x86 или Windows x64. |
_XM_ARM_NEON_INTRINSICS_ | Это указывает, что реализация DirectXMath использует встроенные функции ARM-NEON. По умолчанию _XM_ARM_NEON_INTRINSICS_ определяется при компиляции пользователей для платформы Windows на платформе ARM или ARM64. 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 реализуются для использования 128-разрядных встроенных функций SSE3, SSE4.1 и AVX. В противном случае 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_ | Это позволяет использовать соглашение о вызовах __vectorcall для целевых объектов Windows x86 или Windows x64. По умолчанию используется значение _XM_VECTORCALL_=1, если компилятор поддерживает эту функцию. Вы можете вручную задать для него значение _XM_VECTORCALL_=0, чтобы всегда отключать его. __vectorcall не поддерживается в Windows на платформе ARM/ARM64 или управляемом C++. |
_XM_SVML_INTRINSICS_ | Новые возможности для DirectXMath 3.16. В VS 2019 или более поздней версии это позволяет библиотеке использовать библиотеку Intel® Short Vector Matrix Library для x86/x64. |
Связанные темы