• Carlos Eduardo Seo's avatar
    runtime: implement procyield properly for ppc64x · 1caa0629
    Carlos Eduardo Seo authored
    The procyield() function should yield the processor as in other
    architectures. On ppc64x, this is achieved by setting the Program
    Priority Register to 'low priority' prior to the spin loop, and
    setting it back to 'medium-low priority' afterwards.
    
    benchmark                          old ns/op     new ns/op     delta
    BenchmarkMakeChan/Byte-8           87.7          86.6          -1.25%
    BenchmarkMakeChan/Int-8            107           106           -0.93%
    BenchmarkMakeChan/Ptr-8            201           204           +1.49%
    BenchmarkMakeChan/Struct/0-8       78.2          79.7          +1.92%
    BenchmarkMakeChan/Struct/32-8      196           200           +2.04%
    BenchmarkMakeChan/Struct/40-8      236           230           -2.54%
    BenchmarkChanNonblocking-8         8.64          8.85          +2.43%
    BenchmarkChanUncontended-8         5577          5598          +0.38%
    BenchmarkChanContended-8           66106         51529         -22.05%
    BenchmarkChanSync-8                451           441           -2.22%
    BenchmarkChanSyncWork-8            9155          9170          +0.16%
    BenchmarkChanProdCons0-8           1585          1083          -31.67%
    BenchmarkChanProdCons10-8          1094          838           -23.40%
    BenchmarkChanProdCons100-8         831           657           -20.94%
    BenchmarkChanProdConsWork0-8       1471          941           -36.03%
    BenchmarkChanProdConsWork10-8      1033          721           -30.20%
    BenchmarkChanProdConsWork100-8     730           511           -30.00%
    BenchmarkChanCreation-8            135           128           -5.19%
    BenchmarkChanSem-8                 602           463           -23.09%
    BenchmarkChanPopular-8             3017466       2188441       -27.47%
    
    Fixes #25625
    
    Change-Id: Iacb1c888d3c066902152b8367500348fb631c5f9
    Reviewed-on: https://go-review.googlesource.com/115376
    Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    1caa0629
asm_ppc64x.s 24.8 KB