On Saturday, 22 November 2014 at 18:30:06 UTC, Ad wrote:
Hello, I would like to write a "popcnt" function. This works
fine
ulong popcnt(ulong x)
{
asm { mov RAX, x ; popcnt RAX, RAX ; }
}
However, if I add the "naked" keyword ( which should improve
performance? ) it doesn't work anymore and I can't figure out
what change I am supposed to make ( aside from x[RBP] instead
of x )
This function is going to be *heavily* used.
Thanks for any help.
Last time I used naked asm simply used the calling convention to
figure out the location of the parameter (e.g. RCX win64, RDI
linux 64, iirc.)
N.B. on LDC & GDC there is an intrinsic for popcnt.