I mention intrinsics because, according to Florian, someone is already developing support for them, although I can't remember the SVN repository off-hand. P.S. If such generics were to be supported with my code, it would have to be akin to:
generic function ShufPS(aArg: TM128): TM128; vectorcall; assembler; nostackframe; inline; { I know, that's a lot of directives! } asm SHUFPS XMM0, XMM0, N end; That may get messy in the compiler source very quickly, but depending on how well-liked my inline assembler code is, it might be something to look into and experiment with. One step at a time though. There is an example of an intrinsic in one of the regression tests actually... tests/test/cg/tvectorcall3.pp contains a function that just calls ADDPS and has the "inline" directive - until now, "inline" was ignored with a compiler hint, but with my additions, now actually inlines the instruction. Gareth aka. Kit On Fri 15/03/19 13:37 , "Sven Barth" pascaldra...@googlemail.com sent: J. Gareth Moreton schrieb am Fr., 15. März 2019, 12:33: P.S. Though this feature can be used for implementing intrinsics, it is not a direct replacement for them because instructions like SHUFPS cannot be flexibly encoded due to its immediate operand (i.e. it has to be a raw number... it can't take its value from a parameter). That could maybe be managed once the support for constants as parameter for generics is added (note: I don't know right now how SHUFPS works, so take the following as pseudo code): === code begin === generic function ShufPS(aArg: Whatever): Whatever; inline;begin asm SHUFPS %xmm1, %xmm2, N end;end; === code end === As long as the assembler reader correctly handles constants for those parameters this could work as for each N the compiler creates a new function... Regards,Sven
_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel