diff options
author | Paul E. Murphy <murp@ibm.com> | 2024-04-26 09:26:52 -0500 |
---|---|---|
committer | Paul Murphy <murp@ibm.com> | 2024-05-03 21:12:29 +0000 |
commit | 7994da4cc143fa16803bf80188b849457b7d55c3 (patch) | |
tree | fcef6b85c42e8f727c94bc4c633764931c7bac6c /test | |
parent | 99fc3179487b8014f5b301e83fce8ccd618afa09 (diff) | |
download | go-7994da4cc143fa16803bf80188b849457b7d55c3.tar.gz go-7994da4cc143fa16803bf80188b849457b7d55c3.zip |
cmd/compile/internal/ssa: on PPC64, try combining CLRLSLDI and SRDconst into RLWINM
This provides a small performance bump to crc64 as measured on ppc64le/power10:
name old time/op new time/op delta
Crc64/ISO64KB 49.6µs ± 0% 46.6µs ± 0% -6.18%
Crc64/ISO4KB 3.16µs ± 0% 2.97µs ± 0% -5.83%
Crc64/ISO1KB 840ns ± 0% 794ns ± 0% -5.46%
Crc64/ECMA64KB 49.6µs ± 0% 46.5µs ± 0% -6.20%
Crc64/Random64KB 53.1µs ± 0% 49.9µs ± 0% -6.04%
Crc64/Random16KB 15.9µs ± 1% 15.0µs ± 0% -5.73%
Change-Id: I302b5431c7dc46dfd2d211545c483bdcdfe011f1
Cq-Include-Trybots: luci.golang.try:gotip-linux-ppc64_power10,gotip-linux-ppc64_power8,gotip-linux-ppc64le_power8,gotip-linux-ppc64le_power9,gotip-linux-ppc64le_power10
Reviewed-on: https://go-review.googlesource.com/c/go/+/581937
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: Eli Bendersky <eliben@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/codegen/shift.go | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/codegen/shift.go b/test/codegen/shift.go index 50d60426d0..5bd7acc063 100644 --- a/test/codegen/shift.go +++ b/test/codegen/shift.go @@ -453,6 +453,27 @@ func checkMergedShifts32(a [256]uint32, b [256]uint64, u uint32, v uint32) { b[2] = b[v>>25] } +func checkMergedShifts64(a [256]uint32, b [256]uint64, v uint64) { + // ppc64x: -"CLRLSLDI", "RLWNM\t[$]10, R[0-9]+, [$]22, [$]29, R[0-9]+" + a[0] = a[uint8(v>>24)] + // ppc64x: "SRD", "CLRLSLDI", -"RLWNM" + a[1] = a[uint8(v>>25)] + // ppc64x: -"CLRLSLDI", "RLWNM\t[$]9, R[0-9]+, [$]23, [$]29, R[0-9]+" + a[2] = a[v>>25&0x7F] + // ppc64x: -"CLRLSLDI", "RLWNM\t[$]3, R[0-9]+, [$]29, [$]29, R[0-9]+" + a[3] = a[(v>>31)&0x01] + // ppc64x: "SRD", "CLRLSLDI", -"RLWNM" + a[4] = a[(v>>30)&0x07] + // ppc64x: "SRD", "CLRLSLDI", -"RLWNM" + a[5] = a[(v>>32)&0x01] + // ppc64x: "SRD", "CLRLSLDI", -"RLWNM" + a[5] = a[(v>>34)&0x03] + // ppc64x: -"CLRLSLDI", "RLWNM\t[$]12, R[0-9]+, [$]21, [$]28, R[0-9]+" + b[0] = b[uint8(v>>23)] + // ppc64x: -"CLRLSLDI", "RLWNM\t[$]15, R[0-9]+, [$]21, [$]28, R[0-9]+" + b[1] = b[(v>>20)&0xFF] +} + // 128 bit shifts func check128bitShifts(x, y uint64, bits uint) (uint64, uint64) { |