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.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to