I guess you're right.  It just seems weird because the System V ABI was designed from the start to use the MM registers fully, so long as the data is aligned.  In effect, it had vectorcall wrapped into its design from the start.  Granted, vectorcall has some advantages and can deal with relatively complex aggregates that the System V ABI cannot handle (for example, a record type that contains a normal vector and information relating to bump mapping).

I just hoped that making updates to uComplex, while ensuring existing Pascal code still compiles, would help take advantage of modern ABI designs.

Gareth aka. Kit

On 27/10/2019 01:12, Sven Barth via fpc-devel wrote:

    I don't think the compiler can be made smart and safe enough to
    auto-align something like the complex type to take full advantage
    of the
    System V ABI, and vectorcall is not the default Win64 calling
    (and the default convention is a little badly-designed if I'm
    allowed to
    say, since it doesn't vectorise anything at all).

It's not badly designed, it's a child of its time. Back when Win64 was conceived it wasn't expected that the use of SSE would become as widespread as it is now. And one doesn't simply change a platform ABI on a whim. That's why Microsoft introduced vectorcall after all...


fpc-devel maillist  -  fpc-devel@lists.freepascal.org

This email has been checked for viruses by Avast antivirus software.
fpc-devel maillist  -  fpc-devel@lists.freepascal.org

Reply via email to