MSDN:
In addition to the type aliases, you must also use the XM_CALLCONV annotation to make sure the function uses the appropriate calling convention (__fastcall versus __vectorcall) based on your compiler and architecture. Because of limitations with __vectorcall, we recommend that you not use XM_CALLCONV for C++ constructors.
MSDN:
The __vectorcall calling convention specifies that arguments to functions are to be passed in registers, when possible. __vectorcall uses more registers for arguments than __fastcall or the default x64 calling convention use. The __vectorcall calling convention is only supported in native code on x86 and x64 processors that include Streaming SIMD Extensions 2 (SSE2) and above. Use __vectorcall to speed functions that pass several floating-point or SIMD vector arguments and perform operations that take advantage of the arguments loaded in registers.
Given these two documentation snippets, I wonder why XMLoadX (e.g. XMLoadFloat2, etc.) use XM_CALLCONV, since no XMVECTOR or XMMATRIX (or some type aliases) are passed as arguments for these functions?
MSDN:
MSDN:
Given these two documentation snippets, I wonder why
XMLoadX(e.g.XMLoadFloat2, etc.) useXM_CALLCONV, since noXMVECTORorXMMATRIX(or some type aliases) are passed as arguments for these functions?