• Herbert Valerio Riedel's avatar
    Implement new CLZ and CTZ primops (re #9340) · e0c1767d
    Herbert Valerio Riedel authored
    This implements the new primops
      clz#, clz32#, clz64#,
      ctz#, ctz32#, ctz64#
    which provide efficient implementations of the popular
    count-leading-zero and count-trailing-zero respectively
    (see testcase for a pure Haskell reference implementation).
    On x86, NCG as well as LLVM generates code based on the BSF/BSR
    instructions (which need extra logic to make the 0-case well-defined).
    Test Plan: validate and succesful tests on i686 and amd64
    Reviewers: rwbarton, simonmar, ezyang, austin
    Subscribers: simonmar, relrod, ezyang, carter
    Differential Revision: https://phabricator.haskell.org/D144
    GHC Trac Issues: #9340
all.T 6.01 KB