]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: intrinsify math/bits/ReverseBytes{16|32|64} for ppc64/power10
authorArchana R <aravind5@in.ibm.com>
Mon, 31 Oct 2022 16:47:17 +0000 (11:47 -0500)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Fri, 3 Feb 2023 19:01:06 +0000 (19:01 +0000)
commitcd1fc871568e9947e84377f82c8d7a4882a07067
treeef410ca867d20d4dd970ad6bbc01ac062e6da54a
parenta96487613e2703d1eb7e12c51647e36973df9fd0
cmd/compile: intrinsify math/bits/ReverseBytes{16|32|64} for ppc64/power10

This change intrinsifies ReverseBytes{16|32|64} by generating the
corresponding new instructions in Power10: brh, brd and brw and
adds a verification test for the same.
On Power 9 and 8, the .go code performs optimally as it is.

Performance improvement seen on Power10:
ReverseBytes32  1.38ns ± 0%  1.18ns ± 0%  -14.2
ReverseBytes64  1.52ns ± 0%  1.11ns ± 0%  -26.87
ReverseBytes16  1.41ns ± 1%  1.18ns ± 0%  -16.47

Change-Id: I88f127f3ab9ba24a772becc21ad90acfba324b37
Reviewed-on: https://go-review.googlesource.com/c/go/+/446675
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
src/cmd/compile/internal/ppc64/ssa.go
src/cmd/compile/internal/ssa/_gen/PPC64.rules
src/cmd/compile/internal/ssa/_gen/PPC64Ops.go
src/cmd/compile/internal/ssa/_gen/genericOps.go
src/cmd/compile/internal/ssa/opGen.go
src/cmd/compile/internal/ssa/rewritePPC64.go
src/cmd/compile/internal/ssagen/ssa.go
test/codegen/mathbits.go
test/run.go