[fpc-devel] The new XMM intrinsics

Sven Barth pascaldragon at googlemail.com
Sat Jan 18 20:39:04 CET 2020


Am 18.01.2020 um 18:52 schrieb J. Gareth Moreton:
>
> I think more than anything I would like to see a degree of "ease of 
> use" for the SIMD intrinsics, since modifying __m128 data in C/C++ is 
> not that straightforward.  Just as a straightforward example, what 
> might be the best way to ensure these following record types are 
> compatible with the __m128 data types?
>
> *type *TVector4 = *record*
>   X, Y, Z, W: Single;
> *end*; // compatible with __m128f
>
> *type *TComplex = *record*
>   Re, Im: Double;
> *end*; // compatible with __m128d
>
> Programmers on their own projects, whether it be a game or a 
> mathematical program, would much rather work with those constructs if 
> it can be helped... or at least I would.
>
The compiler currently considers corresponding arrays as compatible, 
like "array[0..3] of Single" or "array[0..1] of Double". In theory 
nothing would stop us from implementing similar compatibility with the 
records you mentioned.

Though to be really useable it would need to be flexible enough to 
handle for the following for example as well:

=== code begin ===

type
   TVector3 = record
     X, Y, Z: Single;
   end;

   TVector4 = record
     P: TVector3;
     W: Single;
   end;

=== code end ===

Regards,
Sven
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20200118/577445ec/attachment.html>


More information about the fpc-devel mailing list