aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPaul E. Murphy <murp@ibm.com>2024-03-07 15:37:14 -0600
committerPaul Murphy <murp@ibm.com>2024-03-15 17:57:45 +0000
commitc7065bb9db1981b32d2f1c9ca1de7aae1f7d4a38 (patch)
tree7812ae43d5a2f820ae76f9b8e3dadd00a9e8d35e /test
parent73cac618016a471e770672883619b0e323f9d875 (diff)
downloadgo-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.go10
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)