[fpc-devel] The new XMM intrinsics

Florian Klämpfl florian at freepascal.org
Sat Jan 18 19:17:48 CET 2020


Am 18.01.20 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.  

... because there exist in general no instructions to do so, e.g. you 
cannot access a xmm register indexed with sse. Those intrinsics provide 
only what the CPU can do directly.

> 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.

This is another level of abstraction, the intrinsics aim really at a 
direct usage of the sse/avx instructions. No more, no less.


More information about the fpc-devel mailing list