L’article de “DirectXMath Library Internals” sur MSDN indique que:
En raison des limitations avec __vectorcall, nous vous recommandons de ne pas utiliser GXMVECTOR ou HXMVECTOR pour les constructeurs C ++.
et
En raison des limitations avec __vectorcall, nous vous recommandons de ne pas utiliser XM_CALLCONV pour les constructeurs C ++.
, où (lors de l’utilisation de __vectorcall
) GXMVECTOR
et HXMVECTOR
sont const __m128
ou const __m128&
et XM_CALLCONV
est __vectorcall
.
Je n’ai vu aucun autre endroit avec de telles recommandations.
Si les limitations ci-dessus existent réellement, pourquoi existent-elles? Que se passerait-il si j’écrivais du code comme ceci:
class foo { public: __vectorcall foo(const __m128 a, const __m128 b) { // do something } };