<html><head></head><body lang="en-GB" style="background-color: rgb(255, 255, 255); line-height: initial;">                                                                                      <div style="width: 100%; font-size: initial; font-family: Calibri, 'Slate Pro', sans-serif, sans-serif; color: rgb(31, 73, 125); text-align: initial; background-color: rgb(255, 255, 255);">Hi John,</div><div style="width: 100%; font-size: initial; font-family: Calibri, 'Slate Pro', sans-serif, sans-serif; color: rgb(31, 73, 125); text-align: initial; background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-size: initial; font-family: Calibri, 'Slate Pro', sans-serif, sans-serif; color: rgb(31, 73, 125); text-align: initial; background-color: rgb(255, 255, 255);">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.</div><div style="width: 100%; font-size: initial; font-family: Calibri, 'Slate Pro', sans-serif, sans-serif; color: rgb(31, 73, 125); text-align: initial; background-color: rgb(255, 255, 255);"><br></div><div style="width: 100%; font-size: initial; font-family: Calibri, 'Slate Pro', sans-serif, sans-serif; color: rgb(31, 73, 125); text-align: initial; background-color: rgb(255, 255, 255);">Hope that helps!</div><div style="width: 100%; font-size: initial; font-family: Calibri, 'Slate Pro', sans-serif, sans-serif; color: rgb(31, 73, 125); text-align: initial; background-color: rgb(255, 255, 255);">Rahul Muttineni</div>                                                                                                                                     <div style="width: 100%; font-size: initial; font-family: Calibri, 'Slate Pro', sans-serif, sans-serif; color: rgb(31, 73, 125); text-align: initial; background-color: rgb(255, 255, 255);"><br style="display:initial"></div>                                                                                                                                                                                                   <div style="font-size: initial; font-family: Calibri, 'Slate Pro', sans-serif, sans-serif; color: rgb(31, 73, 125); text-align: initial; background-color: rgb(255, 255, 255);">Sent from my BlackBerry 10 smartphone.</div>                                                                                                                                                                                  <table width="100%" style="background-color:white;border-spacing:0px;"> <tbody><tr><td colspan="2" style="font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);">                           <div style="border-style: solid none none; border-top-color: rgb(181, 196, 223); border-top-width: 1pt; padding: 3pt 0in 0in; font-family: Tahoma, 'BB Alpha Sans', 'Slate Pro'; font-size: 10pt;">  <div><b>From: </b>John Ky</div><div><b>Sent: </b>Wednesday 23 March 2016 4:40 AM</div><div><b>To: </b>The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell</div><div><b>Reply To: </b>The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell</div><div><b>Subject: </b>[Haskell-beginners] let x = x in x (GHC.Prim)</div></div></td></tr></tbody></table><div style="border-style: solid none none; border-top-color: rgb(186, 188, 209); border-top-width: 1pt; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);"></div><br><div id="_originalContent" style=""><div dir="ltr">Hello Haskellers,<div><br></div><div>I'm trying to write a faster popCount function for x86 systems.<br></div><div><br></div><div>I tried cloning the ghc-prim package and repurposing it for my own needs, but it isn't working as hoped.</div><div><br></div><div>In particular, popCnt64# was implemented in GHC.Prim as:</div><div><br></div><div>popCnt64# = let x = x in x<br></div><div><br></div><div>Which shouldn't terminate.  Yet when I call it, it magically finds the C implementation in hs_popcnt64 and returns the correct value.</div><div><br></div><div>My cloned project doesn't behave that way.  Instead it doesn't terminate as I would expect.</div><div><br></div><div>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?</div><div><br></div><div>Cheers,</div><div><br></div><div>-John</div><div><br></div></div>
<br><!--end of _originalContent --></div></body></html>