[fpc-devel] Vectorization
J. Gareth Moreton
gareth at moreton-family.com
Wed Feb 7 09:23:48 CET 2018
Hi everyone,
After a lot of work, I have implemented 'vectorcall' into Win64, and made a patch for Lazarus to recognise
the keyword in the IDE and highlight it accordingly.
FPC vectorcall patch:
https://bugs.freepascal.org/view.php?id=32781
Lazarus vectorcall support patch:
https://bugs.freepascal.org/view.php?id=33134
The vectorcall patch also contains the code in the patch for issue #27870, since they share a lot in common.
So far, I have confirmed that FPC and Lazarus successfully compile on Win32 and Win64, but I know for a fact
that the code changes affect Linux 64-bit as well in that the SSEUP_CLASS is now properly supported
(vectorcall reuses the System V ABI code for convenience and compatibility), so FPC's implementation of the
System V ABI should now properly support 128-bit SSE vectors.
Note that 256-bit and 512-bit vectors are currently disabled in the code, since the compiler does not fully
support vectors of this size yet, and Florian is working on this himself.
I have provided 3 test programs in #32781 that should compile under both Win64 and Linux 64-bit (it will
throw a custom $FATAL error if it's not one of these two platforms) in order to test correct code production
and register allocation. However, testing will have to be very extensive for this addition.
I hope this will serve the x86-64 assembly programmers well - have fun!
Gareth aka. Kit
More information about the fpc-devel
mailing list