ghc-prim
is just a stub package generated for the purpose of
documentation. All primops are defined in a low level language
called Cmm in GHC. If you want to make it even faster, you'll
need to learn Cmm and update the definition in GHC. If you want
to a specialized implementation for x86 systems, you may need to
modify the NCG (Native Code Generator) which requires a
knowledge of assembly language.
Sent from my BlackBerry 10 smartphone.
Hello Haskellers,
I'm trying to write a faster popCount function for x86
systems.
I tried cloning the ghc-prim package and repurposing it
for my own needs, but it isn't working as hoped.
In particular, popCnt64# was implemented in GHC.Prim as:
popCnt64# = let x = x in x
Which shouldn't terminate. Yet when I call it, it
magically finds the C implementation in hs_popcnt64 and
returns the correct value.
My cloned project doesn't behave that way. Instead it
doesn't terminate as I would expect.
Anyone know what's happening here, if there is a way to
make this work or tell me if I'm going about this completely
the wrong way?
Cheers,
-John