diff options
author | Michael Munday <mike.munday@ibm.com> | 2019-10-02 11:02:41 +0100 |
---|---|---|
committer | Michael Munday <mike.munday@ibm.com> | 2019-10-07 09:19:12 +0000 |
commit | c7d81bc08646ca56d6fe560c77d99be933d7f6dd (patch) | |
tree | 403a098561d3d728badd5174400682fea4636d3b /src/cmd/compile/internal/ssa/rewriteMIPS64.go | |
parent | cfe232042981972dc0c7e8d741a04556ecaae3c3 (diff) | |
download | go-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.go | 132 |
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 } } |