aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/rewriteRISCV64.go
diff options
context:
space:
mode:
authorJoel Sing <joel@sing.id.au>2020-04-13 01:39:45 +1000
committerJoel Sing <joel@sing.id.au>2020-04-12 17:51:29 +0000
commitfb16f4b82e2f7cb1a44cc6e32adad7ce2b0d0553 (patch)
tree565e378ff373012418d91cb4f96f2754607949ed /src/cmd/compile/internal/ssa/rewriteRISCV64.go
parent1eb66be1b933055102b2bdcaa113c04cc24e41f9 (diff)
downloadgo-fb16f4b82e2f7cb1a44cc6e32adad7ce2b0d0553.tar.gz
go-fb16f4b82e2f7cb1a44cc6e32adad7ce2b0d0553.zip
cmd/compile: log large copies on riscv64
Log large copies in the riscv64 compiler. This was missed in 47ade08141b23cfeafed92943e16012d5dc5eb8b, resulting in the new test added to cmd/compile/internal/logopt failing on riscv64. Change-Id: I6f763e86f42834148e911d16928f9fbabcfa4290 Reviewed-on: https://go-review.googlesource.com/c/go/+/227804 Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: David Chase <drchase@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/ssa/rewriteRISCV64.go')
-rw-r--r--src/cmd/compile/internal/ssa/rewriteRISCV64.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ssa/rewriteRISCV64.go b/src/cmd/compile/internal/ssa/rewriteRISCV64.go
index 7405f686eb6..6a0f7f1c96f 100644
--- a/src/cmd/compile/internal/ssa/rewriteRISCV64.go
+++ b/src/cmd/compile/internal/ssa/rewriteRISCV64.go
@@ -1894,6 +1894,7 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
return true
}
// match: (Move [s] {t} dst src mem)
+ // cond: (s <= 16 || logLargeCopy(v, s))
// result: (LoweredMove [t.(*types.Type).Alignment()] dst src (ADDI <src.Type> [s-moveSize(t.(*types.Type).Alignment(), config)] src) mem)
for {
s := v.AuxInt
@@ -1901,6 +1902,9 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
dst := v_0
src := v_1
mem := v_2
+ if !(s <= 16 || logLargeCopy(v, s)) {
+ break
+ }
v.reset(OpRISCV64LoweredMove)
v.AuxInt = t.(*types.Type).Alignment()
v0 := b.NewValue0(v.Pos, OpRISCV64ADDI, src.Type)
@@ -1909,6 +1913,7 @@ func rewriteValueRISCV64_OpMove(v *Value) bool {
v.AddArg4(dst, src, v0, mem)
return true
}
+ return false
}
func rewriteValueRISCV64_OpMul16(v *Value) bool {
v_1 := v.Args[1]