[fpc-devel] vmul commutative optimization?
Marco van de Voort
fpc at pascalprogramming.org
Wed Nov 13 17:03:22 CET 2019
Op 2019-11-12 om 20:46 schreef J. Gareth Moreton:
>
> The Microsoft ABI is a bit restrictive when it comes to record types;
> as described here
> <https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention?view=vs-2019>,
> "Structs and unions of size 8, 16, 32, or 64 bits, and __m64 types,
> are passed as if they were integers of the same size." So
> unfortunately, a single-precision complex number is treated as a
> 64-bit structure and passed as an integer. The System V ABI, on the
> other hand, would pass the two entries through the lower 64 bits of
> XMM0. Vectorcall, theoretically, should put the two components into
> XMM0 and XMM1, because the complex type would be considered a
> "homogeneous vector aggregate" (with floats as 1-dimensional vectors).
>
I've found refs like
https://devblogs.microsoft.com/cppblog/introducing-vector-calling-convention/#comments
so the question is if partial vectors (and specially 2 single 8-byte,
since there are various special SSE opcodes to deal with them) are one
register or not. The references I found usually talk about "vector types
like _m128 and _m256), but don't really specify an exhaustive list.
I guess that means testing with VS?
More information about the fpc-devel
mailing list