diff options
author | Paul E. Murphy <murp@ibm.com> | 2024-03-07 15:37:14 -0600 |
---|---|---|
committer | Paul Murphy <murp@ibm.com> | 2024-03-15 17:57:45 +0000 |
commit | c7065bb9db1981b32d2f1c9ca1de7aae1f7d4a38 (patch) | |
tree | 7812ae43d5a2f820ae76f9b8e3dadd00a9e8d35e /test | |
parent | 73cac618016a471e770672883619b0e323f9d875 (diff) | |
download | go-c7065bb9db1981b32d2f1c9ca1de7aae1f7d4a38.tar.gz go-c7065bb9db1981b32d2f1c9ca1de7aae1f7d4a38.zip |
cmd/compile/internal: generate ADDZE on PPC64
This usage shows up in quite a few places, and helps reduce
register pressure in several complex cryto functions by
removing a MOVD $0,... instruction.
Change-Id: I9444ea8f9d19bfd68fb71ea8dc34e109681b3802
Reviewed-on: https://go-review.googlesource.com/c/go/+/571055
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Paul Murphy <murp@ibm.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/codegen/mathbits.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/test/codegen/mathbits.go b/test/codegen/mathbits.go index 184d608424..82a139acab 100644 --- a/test/codegen/mathbits.go +++ b/test/codegen/mathbits.go @@ -516,6 +516,7 @@ func Add64R(x, y, ci uint64) uint64 { r, _ := bits.Add64(x, y, ci) return r } + func Add64M(p, q, r *[3]uint64) { var c uint64 r[0], c = bits.Add64(p[0], q[0], c) @@ -527,6 +528,15 @@ func Add64M(p, q, r *[3]uint64) { r[2], c = bits.Add64(p[2], q[2], c) } +func Add64M0(p, q, r *[3]uint64) { + var c uint64 + r[0], c = bits.Add64(p[0], q[0], 0) + // ppc64x: -"ADDC", -"ADDE", "ADDZE\tR[1-9]" + r[1], c = bits.Add64(p[1], 0, c) + // ppc64x: -"ADDC", "ADDE", -"ADDZE" + r[2], c = bits.Add64(p[2], p[2], c) +} + func Add64MSaveC(p, q, r, c *[2]uint64) { // ppc64x: "ADDC\tR", "ADDZE" r[0], c[0] = bits.Add64(p[0], q[0], 0) |