In regards to vectorisation, one of my first targets is the uComplex unit, which uses a record type consisting of 2 Doubles to hold a complex number and whose operator procedures are good candidates for the 'vectorcall' calling convention under Win64 (it's a little more flexible at creating vectors than Microsoft Visual C++ is).  I'll have to double-check how good the System V ABI is for x86_64-linux when it comes to that.

It will be interesting to see how well this unit can be vectorised under AArch64 as well, since I'm not sure if its calling conventions can be adapted or if we have to make a new one.

Gareth aka. Kit

On 10/01/2022 09:23, J. Gareth Moreton via fpc-devel wrote:
I have a passion for games programming so this one really rings close for me.  The tricky thing is that early SSE and AVX instructions have to fill and use the entire register - it's only AVX512 that starts to allow partial filling, so things like packed 3-dimensional vectors are a little difficult to manage.  One can't just add a dummy 4th component because then storage won't behave as expected.

Gareth aka. Kit

On 10/01/2022 03:08, Ryan Joseph via fpc-devel wrote:

On Jan 9, 2022, at 2:09 PM, J. Gareth Moreton via fpc-devel <fpc-devel@lists.freepascal.org> wrote:

https://www.patreon.com/posts/60922821
Your plans are vectorization are an important gain for linear algebra and games.

Could you detect things like:

var
   a, b, c: TVec2;
begin
   c := a + b * V2(10, 10);

where the vec2 type has operator overloads for common operations? This kind of thing is very common in graphics math and I bet there's some clever ways you could compress that operation down. Curious how the C++ compilers do this also...

Regards,
    Ryan Joseph

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel



--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to