[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