mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
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>
This commit is contained in:
parent
73cac61801
commit
c7065bb9db
6 changed files with 52 additions and 0 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue