Visual C++ for WIN32では、4つ以上のSSEパラメータを持つ関数に長年にわたる問題があります。Visual Studioのパラメータの配置制限とWindows x64 ABI
__m128i foo4(__m128i m0, __m128i m1, __m128i m2, __m128i m3) {}
はエラーを生成します。
align.c(8) : error C2719: 'm3': formal parameter with __declspec(align('16')) won't be aligned
問題、機能は__inline
場合でも、まだ不ABI制限を課しているのVisual C++を化合物に。
これは64ビットWindowsでまだ問題があるのでしょうか? ABIの制限はx64にも適用されますか?
(私はそう、私はそれを自分で試してみた64ビットのWindowsシステムへのアクセス権を持っていない、と豊富なGoogle検索は決定的なものが提供されていません。)
[Agner霧の "規則を呼び出す" マニュアル(セクション7.2)]によれば、(http://www.agner.org/optimize/)、Windows64は、すべての__m128パラメータを渡しポインタなので、4つ以上の__m128パラメータはそこで問題にすべきではありません。 (Windowsシステムへのアクセス権もないので、これをチェックすることはできません)。 –