diff options
author | David Chase <drchase@google.com> | 2019-11-02 23:57:11 -0400 |
---|---|---|
committer | David Chase <drchase@google.com> | 2020-04-03 17:24:48 +0000 |
commit | 47ade08141b23cfeafed92943e16012d5dc5eb8b (patch) | |
tree | 0e38e95ad3de867e5151cf61e811c56999401a69 /src/cmd/compile/internal/ssa/rewriteS390X.go | |
parent | 3103495fa9bb166c9d0c56fbf3cd2146f32aef57 (diff) | |
download | go-47ade08141b23cfeafed92943e16012d5dc5eb8b.tar.gz go-47ade08141b23cfeafed92943e16012d5dc5eb8b.zip |
cmd/compile: add logging for large (>= 128 byte) copies
For 1.15, unless someone really wants it in 1.14.
A performance-sensitive user thought this would be useful,
though "large" was not well-defined. If 128 is large,
there are 139 static instances of "large" copies in the compiler
itself.
Includes test.
Change-Id: I81f20c62da59d37072429f3a22c1809e6fb2946d
Reviewed-on: https://go-review.googlesource.com/c/go/+/205066
Run-TryBot: David Chase <drchase@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/cmd/compile/internal/ssa/rewriteS390X.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/rewriteS390X.go | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/cmd/compile/internal/ssa/rewriteS390X.go b/src/cmd/compile/internal/ssa/rewriteS390X.go index 7dd2e7633b..83f8d31f82 100644 --- a/src/cmd/compile/internal/ssa/rewriteS390X.go +++ b/src/cmd/compile/internal/ssa/rewriteS390X.go @@ -3303,14 +3303,14 @@ func rewriteValueS390X_OpMove(v *Value) bool { return true } // match: (Move [s] dst src mem) - // cond: s > 0 && s <= 256 + // cond: s > 0 && s <= 256 && logLargeCopy(v, s) // result: (MVC [makeValAndOff(s, 0)] dst src mem) for { s := v.AuxInt dst := v_0 src := v_1 mem := v_2 - if !(s > 0 && s <= 256) { + if !(s > 0 && s <= 256 && logLargeCopy(v, s)) { break } v.reset(OpS390XMVC) @@ -3319,14 +3319,14 @@ func rewriteValueS390X_OpMove(v *Value) bool { return true } // match: (Move [s] dst src mem) - // cond: s > 256 && s <= 512 + // cond: s > 256 && s <= 512 && logLargeCopy(v, s) // result: (MVC [makeValAndOff(s-256, 256)] dst src (MVC [makeValAndOff(256, 0)] dst src mem)) for { s := v.AuxInt dst := v_0 src := v_1 mem := v_2 - if !(s > 256 && s <= 512) { + if !(s > 256 && s <= 512 && logLargeCopy(v, s)) { break } v.reset(OpS390XMVC) @@ -3338,14 +3338,14 @@ func rewriteValueS390X_OpMove(v *Value) bool { return true } // match: (Move [s] dst src mem) - // cond: s > 512 && s <= 768 + // cond: s > 512 && s <= 768 && logLargeCopy(v, s) // result: (MVC [makeValAndOff(s-512, 512)] dst src (MVC [makeValAndOff(256, 256)] dst src (MVC [makeValAndOff(256, 0)] dst src mem))) for { s := v.AuxInt dst := v_0 src := v_1 mem := v_2 - if !(s > 512 && s <= 768) { + if !(s > 512 && s <= 768 && logLargeCopy(v, s)) { break } v.reset(OpS390XMVC) @@ -3360,14 +3360,14 @@ func rewriteValueS390X_OpMove(v *Value) bool { return true } // match: (Move [s] dst src mem) - // cond: s > 768 && s <= 1024 + // cond: s > 768 && s <= 1024 && logLargeCopy(v, s) // result: (MVC [makeValAndOff(s-768, 768)] dst src (MVC [makeValAndOff(256, 512)] dst src (MVC [makeValAndOff(256, 256)] dst src (MVC [makeValAndOff(256, 0)] dst src mem)))) for { s := v.AuxInt dst := v_0 src := v_1 mem := v_2 - if !(s > 768 && s <= 1024) { + if !(s > 768 && s <= 1024 && logLargeCopy(v, s)) { break } v.reset(OpS390XMVC) @@ -3385,14 +3385,14 @@ func rewriteValueS390X_OpMove(v *Value) bool { return true } // match: (Move [s] dst src mem) - // cond: s > 1024 + // cond: s > 1024 && logLargeCopy(v, s) // result: (LoweredMove [s%256] dst src (ADD <src.Type> src (MOVDconst [(s/256)*256])) mem) for { s := v.AuxInt dst := v_0 src := v_1 mem := v_2 - if !(s > 1024) { + if !(s > 1024 && logLargeCopy(v, s)) { break } v.reset(OpS390XLoweredMove) |