]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: fix intrinsic setting for mul64, add64 on ppc64le
authorLynn Boger <laboger@linux.vnet.ibm.com>
Wed, 5 May 2021 19:33:18 +0000 (14:33 -0500)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Thu, 6 May 2021 18:08:01 +0000 (18:08 +0000)
commit402f177efc5d03c11ac6fd25ebd1f42b0b7ec30c
tree0cd0239e2fd79a64d3bc3239cbaa96e8dca63943
parent51ff3a6965b3fc40aceebe90eaf15a8a1a00a452
cmd/compile: fix intrinsic setting for mul64, add64 on ppc64le

I found a performance regression between the runtime.Hash
benchmarks when comparing Go 1.16 to latest on ppc64le. This
was due to the addition of Mul64 to runtime/internal/math
with the comments that this should be treated as an intrinsic
on platforms where available. However this is was not being
intrinsified on ppc64le because the code in ssagen/ssa.go didn't
correctly specify ppc64le. It had the argument for ArchPPC64
but should have also included ArchPPC64LE.

Treating Mul64 as an intrinsic shows this improvement, and these
results are better than Go 1.16:

Hash5        27.0ns ± 0%     14.0ns ± 0%   -48.1
Hash16       26.6ns ± 0%     14.0ns ± 0%   -47.3
Hash64       50.7ns ± 0%     17.9ns ± 0%   -64.6
Hash1024      500ns ± 0%       99ns ± 0%   -80.1
Hash65536    30.6µs ± 0%      4.0µs ± 0%   -86

Many of the Map related benchmarks in the runtime package also showed
improvement once Mul64 is intrinsified.

Change-Id: I3b5ce637b1620348d81a30cfc359c97ab63aae0f
Reviewed-on: https://go-review.googlesource.com/c/go/+/317303
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: Paul Murphy <murp@ibm.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
src/cmd/compile/internal/ssagen/ssa.go