Hi Rahul,

I see mention of the popcount instruction in nativeGen/X86/CodeGen.hs.  In particular it looks like it only activates if sse4_2 is activated?  Maybe all I need to do is activate this somehow?

Cheers,

-John

On Wed, 23 Mar 2016 at 12:07 <rahulmutt@gmail.com> wrote:
Hi John,

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.

Hope that helps!
Rahul Muttineni

Sent from my BlackBerry 10 smartphone.
From: John Ky
Sent: Wednesday 23 March 2016 4:40 AM
To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell
Reply To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell
Subject: [Haskell-beginners] let x = x in x (GHC.Prim)

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


_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners