Am 19.05.2017 03:30 schrieb "Ryan Joseph" <r...@thealchemistguild.com>: > > > > On May 19, 2017, at 3:48 AM, Florian Klämpfl <flor...@freepascal.org> wrote: > > > > Well, the reason are the linux calling conventions: there are no callee saved xmm registers. This > > means FPC does not use any single/double register variables. I have some prototype fixes in my local > > git mirror, but they are neither finished nor tested. > > Can you please explain how do calling conventions affect this? I failed to run this at all on my Mac but I’m not sure why and even more confused how this would decimate speeds like this.
Even though FPC might use SSE for maths it will still use the x87 to transfer floating values to/from function, especially if they take Extended as parameter/result. I did a test by disabling Extended on Linux x64 trunk compiler and RTL and it tripled the framerate from ~3 to ~10. Additionally some internal functions are not yet available with sole SSE support (frac() indeed comes to mind). Regards, Sven
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal