• Carlos Eduardo Seo's avatar
    cmd/compile, runtime: add new lightweight atomics for ppc64x · 5c472132
    Carlos Eduardo Seo authored
    This change creates the infrastructure for new lightweight atomics
    primitives in runtime/internal/atomic:
    
    - LoadAcq, for load-acquire
    - StoreRel, for store-release
    - CasRel, for Compare-and-Swap-release
    
    and implements them for ppc64x. There is visible performance improvement
    in producer-consumer scenarios, like BenchmarkChanProdCons*:
    
    benchmark                           old ns/op     new ns/op     delta
    BenchmarkChanProdCons0-48           2034          2034          +0.00%
    BenchmarkChanProdCons10-48          1798          1608          -10.57%
    BenchmarkChanProdCons100-48         1596          1585          -0.69%
    BenchmarkChanProdConsWork0-48       2084          2046          -1.82%
    BenchmarkChanProdConsWork10-48      1829          1668          -8.80%
    BenchmarkChanProdConsWork100-48     1650          1650          +0.00%
    
    Fixes #21348
    
    Change-Id: I1f6ce377e4a0fe4bd7f5f775e8036f50070ad8db
    Reviewed-on: https://go-review.googlesource.com/c/142277
    Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarDavid Chase <drchase@google.com>
    5c472132
asm_amd64.s 3.77 KB