• Michael Achenbach's avatar
    Revert "[bits] Consolidate Count{Leading,Trailing}Zeros" · 1a1968fe
    Michael Achenbach authored
    This reverts commit 7d231e57.
    
    Reason for revert: Breaks revert for win-clang:
    https://build.chromium.org/p/tryserver.chromium.win/builders/win_clang/builds/342755
    
    Original change's description:
    > [bits] Consolidate Count{Leading,Trailing}Zeros
    > 
    > Instead of having one method for 32 bit integers and one for 64 bit,
    > plus a templatized version to choose from those two, just implement one
    > version which handles unsigned integers of any size. Also, make them
    > constexpr.
    > The Count{Leading,Trailing}Zeros{32,64} methods are kept for now in
    > order to keep the amount of code changes small. Also, sometimes it
    > improves readability by stating exactly the size of the argument,
    > especially for leading zeros (where zero-extending would add more
    > leading zeros).
    > 
    > CountLeadingZeros now uses a binary search inspired implementation
    > as proposed in Hacker's Delight. It's more than 20% faster on x64 if
    > the builtins are disabled.
    > CountTrailingZeros falls back to CountPopulation instead of counting in
    > a naive loop. This is ~50% faster.
    > 
    > R=​mstarzinger@chromium.org
    > 
    > Change-Id: I1d8bf1d7295b930724163248150444bd17fbb34e
    > Reviewed-on: https://chromium-review.googlesource.com/741231
    > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
    > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#49106}
    
    TBR=mstarzinger@chromium.org,clemensh@chromium.org
    
    Change-Id: Iceeb35bf9c7539a1013c9bdbc47118008611bef2
    No-Presubmit: true
    No-Tree-Checks: true
    No-Try: true
    Reviewed-on: https://chromium-review.googlesource.com/753463Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#49123}
    1a1968fe
machine-operator-reducer.cc 54.1 KB