mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: fix load-combining rules
CL 33632 reorders args of commutative ops in order to make CSE for commutative ops more robust. Unfortunately, that broke the load-combining rules which depend on a certain ordering of OR ops' arguments. Introduce some additional rules that order OR ops' arguments consistently so that the load-combining rules fire. Note: there's also something else wrong with the s390x rules. I've filed #19059 for that. Fixes #18946 Change-Id: I0a5447196bd88a55ccee683c69a57b943a9972e1 Reviewed-on: https://go-review.googlesource.com/36911 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
This commit is contained in:
parent
76b4b8c72d
commit
b548eee3d9
7 changed files with 129 additions and 0 deletions
|
|
@ -221,6 +221,39 @@ func f(b []byte, i int) uint32 {
|
|||
`,
|
||||
[]string{"\tMOVL\t\\(.*\\)\\(.*\\*1\\),"},
|
||||
},
|
||||
{"s390x", "linux", `
|
||||
import "encoding/binary"
|
||||
func f(b []byte) uint32 {
|
||||
return binary.LittleEndian.Uint32(b)
|
||||
}
|
||||
`,
|
||||
[]string{"\tMOVWZ\t\\(.*\\),"},
|
||||
},
|
||||
{"s390x", "linux", `
|
||||
import "encoding/binary"
|
||||
func f(b []byte, i int) uint32 {
|
||||
return binary.LittleEndian.Uint32(b[i:])
|
||||
}
|
||||
`,
|
||||
[]string{"\tMOVWZ\t\\(.*\\)\\(.*\\*1\\),"},
|
||||
},
|
||||
{"s390x", "linux", `
|
||||
import "encoding/binary"
|
||||
func f(b []byte) uint64 {
|
||||
return binary.LittleEndian.Uint64(b)
|
||||
}
|
||||
`,
|
||||
[]string{"\tMOVD\t\\(.*\\),"},
|
||||
},
|
||||
{"s390x", "linux", `
|
||||
import "encoding/binary"
|
||||
func f(b []byte, i int) uint64 {
|
||||
return binary.LittleEndian.Uint64(b[i:])
|
||||
}
|
||||
`,
|
||||
[]string{"\tMOVD\t\\(.*\\)\\(.*\\*1\\),"},
|
||||
},
|
||||
// TODO: s390x big-endian tests.
|
||||
|
||||
// Structure zeroing. See issue #18370.
|
||||
{"amd64", "linux", `
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue