• Brian Kessler's avatar
    cmd/compile: intrinsify RotateLeft32 on wasm · b003afe4
    Brian Kessler authored
    wasm has 32-bit versions of all integer operations. This change
    lowers RotateLeft32 to i32.rotl on wasm and intrinsifies the math/bits
    call.  Benchmarking on amd64 under node.js this is ~25% faster.
    
    node v10.15.3/amd64
    name          old time/op  new time/op  delta
    RotateLeft    8.37ns ± 1%  8.28ns ± 0%   -1.05%  (p=0.029 n=4+4)
    RotateLeft8   11.9ns ± 1%  11.8ns ± 0%     ~     (p=0.167 n=5+5)
    RotateLeft16  11.8ns ± 0%  11.8ns ± 0%     ~     (all equal)
    RotateLeft32  11.9ns ± 1%   8.7ns ± 0%  -26.32%  (p=0.008 n=5+5)
    RotateLeft64  8.31ns ± 1%  8.43ns ± 2%     ~     (p=0.063 n=5+5)
    
    Updates #31265
    
    Change-Id: I5b8e155978faeea536c4f6427ac9564d2f096a46
    Reviewed-on: https://go-review.googlesource.com/c/go/+/182359
    Run-TryBot: Brian Kessler <brian.m.kessler@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarRichard Musiol <neelance@gmail.com>
    b003afe4
ssa.go 199 KB