• Keith Randall's avatar
    cmd/compile: intrinsics for math/bits.OnesCount · 5cadc91b
    Keith Randall authored
    Popcount instructions on amd64 are not guaranteed to be
    present, so we must guard their call.  Rewrite rules can't
    generate control flow at the moment, so the intrinsifier
    needs to generate that code.
    
    name           old time/op  new time/op  delta
    OnesCount-8    2.47ns ± 5%  1.04ns ± 2%  -57.70%  (p=0.000 n=10+10)
    OnesCount16-8  1.05ns ± 1%  0.78ns ± 0%  -25.56%    (p=0.000 n=9+8)
    OnesCount32-8  1.63ns ± 5%  1.04ns ± 2%  -35.96%  (p=0.000 n=10+10)
    OnesCount64-8  2.45ns ± 0%  1.04ns ± 1%  -57.55%   (p=0.000 n=6+10)
    
    Update #18616
    
    Change-Id: I4aff2cc9aa93787898d7b22055fe272a7cf95673
    Reviewed-on: https://go-review.googlesource.com/38320
    Run-TryBot: Keith Randall <khr@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
    5cadc91b
genericOps.go 26.1 KB