aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/rewriteMIPS64.go
diff options
context:
space:
mode:
authorMichael Munday <mike.munday@ibm.com>2019-10-02 11:02:41 +0100
committerMichael Munday <mike.munday@ibm.com>2019-10-07 09:19:12 +0000
commitc7d81bc08646ca56d6fe560c77d99be933d7f6dd (patch)
tree403a098561d3d728badd5174400682fea4636d3b /src/cmd/compile/internal/ssa/rewriteMIPS64.go
parentcfe232042981972dc0c7e8d741a04556ecaae3c3 (diff)
downloadgo-c7d81bc08646ca56d6fe560c77d99be933d7f6dd.tar.gz
go-c7d81bc08646ca56d6fe560c77d99be933d7f6dd.zip
cmd/compile: reduce amount of code generated for block rewrite rules
Add a Reset method to blocks that allows us to reduce the amount of code we generate for block rewrite rules. Thanks to Cherry for suggesting a similar fix to this in CL 196557. Compilebench result: name old time/op new time/op delta Template 211ms ± 1% 211ms ± 1% -0.30% (p=0.028 n=19+20) Unicode 83.7ms ± 3% 83.0ms ± 2% -0.79% (p=0.029 n=18+19) GoTypes 757ms ± 1% 755ms ± 1% -0.31% (p=0.034 n=19+19) Compiler 3.51s ± 1% 3.50s ± 1% -0.20% (p=0.013 n=18+18) SSA 11.7s ± 1% 11.7s ± 1% -0.38% (p=0.000 n=19+19) Flate 131ms ± 1% 130ms ± 1% -0.32% (p=0.024 n=18+18) GoParser 162ms ± 1% 162ms ± 1% ~ (p=0.059 n=20+18) Reflect 471ms ± 0% 470ms ± 0% -0.24% (p=0.045 n=20+17) Tar 187ms ± 1% 186ms ± 1% ~ (p=0.157 n=20+20) XML 255ms ± 1% 255ms ± 1% ~ (p=0.461 n=19+20) LinkCompiler 754ms ± 2% 755ms ± 2% ~ (p=0.919 n=17+17) ExternalLinkCompiler 2.82s ±16% 2.37s ±10% -15.94% (p=0.000 n=20+20) LinkWithoutDebugCompiler 439ms ± 4% 442ms ± 6% ~ (p=0.461 n=18+19) StdCmd 25.8s ± 2% 25.5s ± 1% -0.95% (p=0.000 n=20+20) name old user-time/op new user-time/op delta Template 240ms ± 8% 238ms ± 7% ~ (p=0.301 n=20+20) Unicode 107ms ±18% 104ms ±13% ~ (p=0.149 n=20+20) GoTypes 883ms ± 3% 888ms ± 2% ~ (p=0.211 n=20+20) Compiler 4.22s ± 1% 4.20s ± 1% ~ (p=0.077 n=20+18) SSA 14.1s ± 1% 14.1s ± 2% ~ (p=0.192 n=20+20) Flate 145ms ±10% 148ms ± 5% ~ (p=0.126 n=20+18) GoParser 186ms ± 7% 186ms ± 7% ~ (p=0.779 n=20+20) Reflect 538ms ± 3% 541ms ± 3% ~ (p=0.192 n=20+20) Tar 218ms ± 4% 217ms ± 6% ~ (p=0.835 n=19+20) XML 298ms ± 5% 298ms ± 5% ~ (p=0.749 n=19+20) LinkCompiler 818ms ± 5% 825ms ± 8% ~ (p=0.461 n=20+20) ExternalLinkCompiler 1.55s ± 4% 1.53s ± 5% ~ (p=0.063 n=20+18) LinkWithoutDebugCompiler 460ms ±12% 460ms ± 7% ~ (p=0.925 n=20+20) name old object-bytes new object-bytes delta Template 554kB ± 0% 554kB ± 0% ~ (all equal) Unicode 215kB ± 0% 215kB ± 0% ~ (all equal) GoTypes 2.01MB ± 0% 2.01MB ± 0% ~ (all equal) Compiler 7.97MB ± 0% 7.97MB ± 0% +0.00% (p=0.000 n=20+20) SSA 26.8MB ± 0% 26.9MB ± 0% +0.27% (p=0.000 n=20+20) Flate 340kB ± 0% 340kB ± 0% ~ (all equal) GoParser 434kB ± 0% 434kB ± 0% ~ (all equal) Reflect 1.34MB ± 0% 1.34MB ± 0% ~ (all equal) Tar 480kB ± 0% 480kB ± 0% ~ (all equal) XML 622kB ± 0% 622kB ± 0% ~ (all equal) name old export-bytes new export-bytes delta Template 20.4kB ± 0% 20.4kB ± 0% ~ (all equal) Unicode 8.21kB ± 0% 8.21kB ± 0% ~ (all equal) GoTypes 36.6kB ± 0% 36.6kB ± 0% ~ (all equal) Compiler 115kB ± 0% 115kB ± 0% +0.08% (p=0.000 n=20+20) SSA 141kB ± 0% 141kB ± 0% +0.07% (p=0.000 n=20+20) Flate 5.11kB ± 0% 5.11kB ± 0% ~ (all equal) GoParser 8.93kB ± 0% 8.93kB ± 0% ~ (all equal) Reflect 11.8kB ± 0% 11.8kB ± 0% ~ (all equal) Tar 10.9kB ± 0% 10.9kB ± 0% ~ (all equal) XML 17.4kB ± 0% 17.4kB ± 0% ~ (all equal) name old text-bytes new text-bytes delta HelloSize 742kB ± 0% 742kB ± 0% ~ (all equal) CmdGoSize 10.7MB ± 0% 10.7MB ± 0% ~ (all equal) name old data-bytes new data-bytes delta HelloSize 10.7kB ± 0% 10.7kB ± 0% ~ (all equal) CmdGoSize 312kB ± 0% 312kB ± 0% ~ (all equal) name old bss-bytes new bss-bytes delta HelloSize 122kB ± 0% 122kB ± 0% ~ (all equal) CmdGoSize 146kB ± 0% 146kB ± 0% ~ (all equal) name old exe-bytes new exe-bytes delta HelloSize 1.10MB ± 0% 1.10MB ± 0% ~ (all equal) CmdGoSize 14.9MB ± 0% 14.9MB ± 0% ~ (all equal) Change-Id: Ic89a8e62423b3d9fd9391159e0663acf450803b5 Reviewed-on: https://go-review.googlesource.com/c/go/+/198419 Run-TryBot: Michael Munday <mike.munday@ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Diffstat (limited to 'src/cmd/compile/internal/ssa/rewriteMIPS64.go')
-rw-r--r--src/cmd/compile/internal/ssa/rewriteMIPS64.go132
1 files changed, 33 insertions, 99 deletions
diff --git a/src/cmd/compile/internal/ssa/rewriteMIPS64.go b/src/cmd/compile/internal/ssa/rewriteMIPS64.go
index 226dc00952..c9cc5ce4f9 100644
--- a/src/cmd/compile/internal/ssa/rewriteMIPS64.go
+++ b/src/cmd/compile/internal/ssa/rewriteMIPS64.go
@@ -9747,10 +9747,8 @@ func rewriteBlockMIPS64(b *Block) bool {
for b.Controls[0].Op == OpMIPS64FPFlagTrue {
v_0 := b.Controls[0]
cmp := v_0.Args[0]
- b.Kind = BlockMIPS64FPF
- b.ResetControls()
+ b.Reset(BlockMIPS64FPF)
b.AddControl(cmp)
- b.Aux = nil
return true
}
// match: (EQ (FPFlagFalse cmp) yes no)
@@ -9758,10 +9756,8 @@ func rewriteBlockMIPS64(b *Block) bool {
for b.Controls[0].Op == OpMIPS64FPFlagFalse {
v_0 := b.Controls[0]
cmp := v_0.Args[0]
- b.Kind = BlockMIPS64FPT
- b.ResetControls()
+ b.Reset(BlockMIPS64FPT)
b.AddControl(cmp)
- b.Aux = nil
return true
}
// match: (EQ (XORconst [1] cmp:(SGT _ _)) yes no)
@@ -9776,10 +9772,8 @@ func rewriteBlockMIPS64(b *Block) bool {
break
}
_ = cmp.Args[1]
- b.Kind = BlockMIPS64NE
- b.ResetControls()
+ b.Reset(BlockMIPS64NE)
b.AddControl(cmp)
- b.Aux = nil
return true
}
// match: (EQ (XORconst [1] cmp:(SGTU _ _)) yes no)
@@ -9794,10 +9788,8 @@ func rewriteBlockMIPS64(b *Block) bool {
break
}
_ = cmp.Args[1]
- b.Kind = BlockMIPS64NE
- b.ResetControls()
+ b.Reset(BlockMIPS64NE)
b.AddControl(cmp)
- b.Aux = nil
return true
}
// match: (EQ (XORconst [1] cmp:(SGTconst _)) yes no)
@@ -9811,10 +9803,8 @@ func rewriteBlockMIPS64(b *Block) bool {
if cmp.Op != OpMIPS64SGTconst {
break
}
- b.Kind = BlockMIPS64NE
- b.ResetControls()
+ b.Reset(BlockMIPS64NE)
b.AddControl(cmp)
- b.Aux = nil
return true
}
// match: (EQ (XORconst [1] cmp:(SGTUconst _)) yes no)
@@ -9828,10 +9818,8 @@ func rewriteBlockMIPS64(b *Block) bool {
if cmp.Op != OpMIPS64SGTUconst {
break
}
- b.Kind = BlockMIPS64NE
- b.ResetControls()
+ b.Reset(BlockMIPS64NE)
b.AddControl(cmp)
- b.Aux = nil
return true
}
// match: (EQ (SGTUconst [1] x) yes no)
@@ -9842,10 +9830,8 @@ func rewriteBlockMIPS64(b *Block) bool {
break
}
x := v_0.Args[0]
- b.Kind = BlockMIPS64NE
- b.ResetControls()
+ b.Reset(BlockMIPS64NE)
b.AddControl(x)
- b.Aux = nil
return true
}
// match: (EQ (SGTU x (MOVVconst [0])) yes no)
@@ -9858,10 +9844,8 @@ func rewriteBlockMIPS64(b *Block) bool {
if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != 0 {
break
}
- b.Kind = BlockMIPS64EQ
- b.ResetControls()
+ b.Reset(BlockMIPS64EQ)
b.AddControl(x)
- b.Aux = nil
return true
}
// match: (EQ (SGTconst [0] x) yes no)
@@ -9872,10 +9856,8 @@ func rewriteBlockMIPS64(b *Block) bool {
break
}
x := v_0.Args[0]
- b.Kind = BlockMIPS64GEZ
- b.ResetControls()
+ b.Reset(BlockMIPS64GEZ)
b.AddControl(x)
- b.Aux = nil
return true
}
// match: (EQ (SGT x (MOVVconst [0])) yes no)
@@ -9888,10 +9870,8 @@ func rewriteBlockMIPS64(b *Block) bool {
if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != 0 {
break
}
- b.Kind = BlockMIPS64LEZ
- b.ResetControls()
+ b.Reset(BlockMIPS64LEZ)
b.AddControl(x)
- b.Aux = nil
return true
}
// match: (EQ (MOVVconst [0]) yes no)
@@ -9901,9 +9881,7 @@ func rewriteBlockMIPS64(b *Block) bool {
if v_0.AuxInt != 0 {
break
}
- b.Kind = BlockFirst
- b.ResetControls()
- b.Aux = nil
+ b.Reset(BlockFirst)
return true
}
// match: (EQ (MOVVconst [c]) yes no)
@@ -9915,9 +9893,7 @@ func rewriteBlockMIPS64(b *Block) bool {
if !(c != 0) {
break
}
- b.Kind = BlockFirst
- b.ResetControls()
- b.Aux = nil
+ b.Reset(BlockFirst)
b.swapSuccessors()
return true
}
@@ -9931,9 +9907,7 @@ func rewriteBlockMIPS64(b *Block) bool {
if !(c >= 0) {
break
}
- b.Kind = BlockFirst
- b.ResetControls()
- b.Aux = nil
+ b.Reset(BlockFirst)
return true
}
// match: (GEZ (MOVVconst [c]) yes no)
@@ -9945,9 +9919,7 @@ func rewriteBlockMIPS64(b *Block) bool {
if !(c < 0) {
break
}
- b.Kind = BlockFirst
- b.ResetControls()
- b.Aux = nil
+ b.Reset(BlockFirst)
b.swapSuccessors()
return true
}
@@ -9961,9 +9933,7 @@ func rewriteBlockMIPS64(b *Block) bool {
if !(c > 0) {
break
}
- b.Kind = BlockFirst
- b.ResetControls()
- b.Aux = nil
+ b.Reset(BlockFirst)
return true
}
// match: (GTZ (MOVVconst [c]) yes no)
@@ -9975,9 +9945,7 @@ func rewriteBlockMIPS64(b *Block) bool {
if !(c <= 0) {
break
}
- b.Kind = BlockFirst
- b.ResetControls()
- b.Aux = nil
+ b.Reset(BlockFirst)
b.swapSuccessors()
return true
}
@@ -9986,10 +9954,8 @@ func rewriteBlockMIPS64(b *Block) bool {
// result: (NE cond yes no)
for {
cond := b.Controls[0]
- b.Kind = BlockMIPS64NE
- b.ResetControls()
+ b.Reset(BlockMIPS64NE)
b.AddControl(cond)
- b.Aux = nil
return true
}
case BlockMIPS64LEZ:
@@ -10002,9 +9968,7 @@ func rewriteBlockMIPS64(b *Block) bool {
if !(c <= 0) {
break
}
- b.Kind = BlockFirst
- b.ResetControls()
- b.Aux = nil
+ b.Reset(BlockFirst)
return true
}
// match: (LEZ (MOVVconst [c]) yes no)
@@ -10016,9 +9980,7 @@ func rewriteBlockMIPS64(b *Block) bool {
if !(c > 0) {
break
}
- b.Kind = BlockFirst
- b.ResetControls()
- b.Aux = nil
+ b.Reset(BlockFirst)
b.swapSuccessors()
return true
}
@@ -10032,9 +9994,7 @@ func rewriteBlockMIPS64(b *Block) bool {
if !(c < 0) {
break
}
- b.Kind = BlockFirst
- b.ResetControls()
- b.Aux = nil
+ b.Reset(BlockFirst)
return true
}
// match: (LTZ (MOVVconst [c]) yes no)
@@ -10046,9 +10006,7 @@ func rewriteBlockMIPS64(b *Block) bool {
if !(c >= 0) {
break
}
- b.Kind = BlockFirst
- b.ResetControls()
- b.Aux = nil
+ b.Reset(BlockFirst)
b.swapSuccessors()
return true
}
@@ -10058,10 +10016,8 @@ func rewriteBlockMIPS64(b *Block) bool {
for b.Controls[0].Op == OpMIPS64FPFlagTrue {
v_0 := b.Controls[0]
cmp := v_0.Args[0]
- b.Kind = BlockMIPS64FPT
- b.ResetControls()
+ b.Reset(BlockMIPS64FPT)
b.AddControl(cmp)
- b.Aux = nil
return true
}
// match: (NE (FPFlagFalse cmp) yes no)
@@ -10069,10 +10025,8 @@ func rewriteBlockMIPS64(b *Block) bool {
for b.Controls[0].Op == OpMIPS64FPFlagFalse {
v_0 := b.Controls[0]
cmp := v_0.Args[0]
- b.Kind = BlockMIPS64FPF
- b.ResetControls()
+ b.Reset(BlockMIPS64FPF)
b.AddControl(cmp)
- b.Aux = nil
return true
}
// match: (NE (XORconst [1] cmp:(SGT _ _)) yes no)
@@ -10087,10 +10041,8 @@ func rewriteBlockMIPS64(b *Block) bool {
break
}
_ = cmp.Args[1]
- b.Kind = BlockMIPS64EQ
- b.ResetControls()
+ b.Reset(BlockMIPS64EQ)
b.AddControl(cmp)
- b.Aux = nil
return true
}
// match: (NE (XORconst [1] cmp:(SGTU _ _)) yes no)
@@ -10105,10 +10057,8 @@ func rewriteBlockMIPS64(b *Block) bool {
break
}
_ = cmp.Args[1]
- b.Kind = BlockMIPS64EQ
- b.ResetControls()
+ b.Reset(BlockMIPS64EQ)
b.AddControl(cmp)
- b.Aux = nil
return true
}
// match: (NE (XORconst [1] cmp:(SGTconst _)) yes no)
@@ -10122,10 +10072,8 @@ func rewriteBlockMIPS64(b *Block) bool {
if cmp.Op != OpMIPS64SGTconst {
break
}
- b.Kind = BlockMIPS64EQ
- b.ResetControls()
+ b.Reset(BlockMIPS64EQ)
b.AddControl(cmp)
- b.Aux = nil
return true
}
// match: (NE (XORconst [1] cmp:(SGTUconst _)) yes no)
@@ -10139,10 +10087,8 @@ func rewriteBlockMIPS64(b *Block) bool {
if cmp.Op != OpMIPS64SGTUconst {
break
}
- b.Kind = BlockMIPS64EQ
- b.ResetControls()
+ b.Reset(BlockMIPS64EQ)
b.AddControl(cmp)
- b.Aux = nil
return true
}
// match: (NE (SGTUconst [1] x) yes no)
@@ -10153,10 +10099,8 @@ func rewriteBlockMIPS64(b *Block) bool {
break
}
x := v_0.Args[0]
- b.Kind = BlockMIPS64EQ
- b.ResetControls()
+ b.Reset(BlockMIPS64EQ)
b.AddControl(x)
- b.Aux = nil
return true
}
// match: (NE (SGTU x (MOVVconst [0])) yes no)
@@ -10169,10 +10113,8 @@ func rewriteBlockMIPS64(b *Block) bool {
if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != 0 {
break
}
- b.Kind = BlockMIPS64NE
- b.ResetControls()
+ b.Reset(BlockMIPS64NE)
b.AddControl(x)
- b.Aux = nil
return true
}
// match: (NE (SGTconst [0] x) yes no)
@@ -10183,10 +10125,8 @@ func rewriteBlockMIPS64(b *Block) bool {
break
}
x := v_0.Args[0]
- b.Kind = BlockMIPS64LTZ
- b.ResetControls()
+ b.Reset(BlockMIPS64LTZ)
b.AddControl(x)
- b.Aux = nil
return true
}
// match: (NE (SGT x (MOVVconst [0])) yes no)
@@ -10199,10 +10139,8 @@ func rewriteBlockMIPS64(b *Block) bool {
if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != 0 {
break
}
- b.Kind = BlockMIPS64GTZ
- b.ResetControls()
+ b.Reset(BlockMIPS64GTZ)
b.AddControl(x)
- b.Aux = nil
return true
}
// match: (NE (MOVVconst [0]) yes no)
@@ -10212,9 +10150,7 @@ func rewriteBlockMIPS64(b *Block) bool {
if v_0.AuxInt != 0 {
break
}
- b.Kind = BlockFirst
- b.ResetControls()
- b.Aux = nil
+ b.Reset(BlockFirst)
b.swapSuccessors()
return true
}
@@ -10227,9 +10163,7 @@ func rewriteBlockMIPS64(b *Block) bool {
if !(c != 0) {
break
}
- b.Kind = BlockFirst
- b.ResetControls()
- b.Aux = nil
+ b.Reset(BlockFirst)
return true
}
}