diff options
author | Josh Bleecher Snyder <josharian@gmail.com> | 2020-02-26 11:29:34 -0800 |
---|---|---|
committer | Josh Bleecher Snyder <josharian@gmail.com> | 2020-03-01 15:27:58 +0000 |
commit | 7913f7dfcf2c281b99c6ddd278aa851de47ada9d (patch) | |
tree | 8a34c42a6e16c5c7864d49030ed474dddff2ff82 /src/cmd/compile/internal/ssa/rewriteAMD64splitload.go | |
parent | a908e09a34fff3c47efab69857d27bf6965b948a (diff) | |
download | go-7913f7dfcf2c281b99c6ddd278aa851de47ada9d.tar.gz go-7913f7dfcf2c281b99c6ddd278aa851de47ada9d.zip |
cmd/compile: add specialized AddArgN functions for rewrite rules
This shrinks the compiler without impacting performance.
(The performance-sensitive part of rewrite rules is the non-match case.)
Passes toolstash-check -all.
Executable size:
file before after Δ %
compile 20356168 20163960 -192208 -0.944%
total 115599376 115407168 -192208 -0.166%
Text size:
file before after Δ %
cmd/compile/internal/ssa.s 3928309 3778774 -149535 -3.807%
total 18862943 18713408 -149535 -0.793%
Memory allocated compiling package SSA:
SSA 12.7M ± 0% 12.5M ± 0% -1.74% (p=0.008 n=5+5)
Compiler speed impact:
name old time/op new time/op delta
Template 211ms ± 1% 211ms ± 2% ~ (p=0.832 n=49+49)
Unicode 82.8ms ± 2% 83.2ms ± 2% +0.44% (p=0.022 n=46+49)
GoTypes 726ms ± 1% 728ms ± 2% ~ (p=0.076 n=46+48)
Compiler 3.39s ± 2% 3.40s ± 2% ~ (p=0.633 n=48+49)
SSA 7.71s ± 1% 7.65s ± 1% -0.78% (p=0.000 n=45+44)
Flate 134ms ± 1% 134ms ± 1% ~ (p=0.195 n=50+49)
GoParser 167ms ± 1% 167ms ± 1% ~ (p=0.390 n=47+47)
Reflect 453ms ± 3% 452ms ± 2% ~ (p=0.492 n=48+49)
Tar 184ms ± 3% 184ms ± 2% ~ (p=0.862 n=50+48)
XML 248ms ± 2% 248ms ± 2% ~ (p=0.096 n=49+47)
[Geo mean] 415ms 415ms -0.03%
name old user-time/op new user-time/op delta
Template 273ms ± 1% 273ms ± 2% ~ (p=0.711 n=48+48)
Unicode 117ms ± 6% 117ms ± 5% ~ (p=0.633 n=50+50)
GoTypes 972ms ± 2% 974ms ± 1% +0.29% (p=0.016 n=47+49)
Compiler 4.46s ± 6% 4.51s ± 6% ~ (p=0.093 n=50+50)
SSA 10.4s ± 1% 10.3s ± 2% -0.94% (p=0.000 n=45+50)
Flate 166ms ± 2% 167ms ± 2% ~ (p=0.148 n=49+48)
GoParser 202ms ± 1% 202ms ± 2% -0.28% (p=0.014 n=47+49)
Reflect 594ms ± 2% 594ms ± 2% ~ (p=0.717 n=48+49)
Tar 224ms ± 2% 224ms ± 2% ~ (p=0.805 n=50+49)
XML 311ms ± 1% 310ms ± 1% ~ (p=0.177 n=49+48)
[Geo mean] 537ms 537ms +0.01%
Change-Id: I562b9f349b34ddcff01771769e6dbbc80604da7a
Reviewed-on: https://go-review.googlesource.com/c/go/+/221237
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/ssa/rewriteAMD64splitload.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/rewriteAMD64splitload.go | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/src/cmd/compile/internal/ssa/rewriteAMD64splitload.go b/src/cmd/compile/internal/ssa/rewriteAMD64splitload.go index 69df3f7a1e..40a7013744 100644 --- a/src/cmd/compile/internal/ssa/rewriteAMD64splitload.go +++ b/src/cmd/compile/internal/ssa/rewriteAMD64splitload.go @@ -41,8 +41,7 @@ func rewriteValueAMD64splitload_OpAMD64CMPBconstload(v *Value) bool { v0 := b.NewValue0(v.Pos, OpAMD64MOVBload, typ.UInt8) v0.AuxInt = offOnly(vo) v0.Aux = sym - v0.AddArg(ptr) - v0.AddArg(mem) + v0.AddArg2(ptr, mem) v.AddArg(v0) return true } @@ -65,10 +64,8 @@ func rewriteValueAMD64splitload_OpAMD64CMPBload(v *Value) bool { v0 := b.NewValue0(v.Pos, OpAMD64MOVBload, typ.UInt8) v0.AuxInt = off v0.Aux = sym - v0.AddArg(ptr) - v0.AddArg(mem) - v.AddArg(v0) - v.AddArg(x) + v0.AddArg2(ptr, mem) + v.AddArg2(v0, x) return true } } @@ -89,8 +86,7 @@ func rewriteValueAMD64splitload_OpAMD64CMPLconstload(v *Value) bool { v0 := b.NewValue0(v.Pos, OpAMD64MOVLload, typ.UInt32) v0.AuxInt = offOnly(vo) v0.Aux = sym - v0.AddArg(ptr) - v0.AddArg(mem) + v0.AddArg2(ptr, mem) v.AddArg(v0) return true } @@ -113,10 +109,8 @@ func rewriteValueAMD64splitload_OpAMD64CMPLload(v *Value) bool { v0 := b.NewValue0(v.Pos, OpAMD64MOVLload, typ.UInt32) v0.AuxInt = off v0.Aux = sym - v0.AddArg(ptr) - v0.AddArg(mem) - v.AddArg(v0) - v.AddArg(x) + v0.AddArg2(ptr, mem) + v.AddArg2(v0, x) return true } } @@ -137,8 +131,7 @@ func rewriteValueAMD64splitload_OpAMD64CMPQconstload(v *Value) bool { v0 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64) v0.AuxInt = offOnly(vo) v0.Aux = sym - v0.AddArg(ptr) - v0.AddArg(mem) + v0.AddArg2(ptr, mem) v.AddArg(v0) return true } @@ -161,10 +154,8 @@ func rewriteValueAMD64splitload_OpAMD64CMPQload(v *Value) bool { v0 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64) v0.AuxInt = off v0.Aux = sym - v0.AddArg(ptr) - v0.AddArg(mem) - v.AddArg(v0) - v.AddArg(x) + v0.AddArg2(ptr, mem) + v.AddArg2(v0, x) return true } } @@ -185,8 +176,7 @@ func rewriteValueAMD64splitload_OpAMD64CMPWconstload(v *Value) bool { v0 := b.NewValue0(v.Pos, OpAMD64MOVWload, typ.UInt16) v0.AuxInt = offOnly(vo) v0.Aux = sym - v0.AddArg(ptr) - v0.AddArg(mem) + v0.AddArg2(ptr, mem) v.AddArg(v0) return true } @@ -209,10 +199,8 @@ func rewriteValueAMD64splitload_OpAMD64CMPWload(v *Value) bool { v0 := b.NewValue0(v.Pos, OpAMD64MOVWload, typ.UInt16) v0.AuxInt = off v0.Aux = sym - v0.AddArg(ptr) - v0.AddArg(mem) - v.AddArg(v0) - v.AddArg(x) + v0.AddArg2(ptr, mem) + v.AddArg2(v0, x) return true } } |