mirror of
https://github.com/golang/go
synced 2024-11-19 14:44:40 -07:00
cmd/compile/internal/ssa: Mark ADD[Q|L]const as rematerializeable
We can rematerialize only ops that have SP or SB as their only argument. There are some ADDQconst(SP) that can be rematerialized, but are spilled/filled instead, so mark addconst as rematerializeable. This shaves ~1kb from go tool. Change-Id: Ib4cf4fe5f2ec9d3d7e5f0f77f1193eba66ca2f08 Reviewed-on: https://go-review.googlesource.com/54393 Run-TryBot: Ilya Tocar <ilya.tocar@intel.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
9afec99dc2
commit
7dd279013b
@ -189,8 +189,8 @@ func init() {
|
|||||||
// binary ops
|
// binary ops
|
||||||
{name: "ADDQ", argLength: 2, reg: gp21sp, asm: "ADDQ", commutative: true, clobberFlags: true}, // arg0 + arg1
|
{name: "ADDQ", argLength: 2, reg: gp21sp, asm: "ADDQ", commutative: true, clobberFlags: true}, // arg0 + arg1
|
||||||
{name: "ADDL", argLength: 2, reg: gp21sp, asm: "ADDL", commutative: true, clobberFlags: true}, // arg0 + arg1
|
{name: "ADDL", argLength: 2, reg: gp21sp, asm: "ADDL", commutative: true, clobberFlags: true}, // arg0 + arg1
|
||||||
{name: "ADDQconst", argLength: 1, reg: gp11sp, asm: "ADDQ", aux: "Int64", typ: "UInt64", clobberFlags: true}, // arg0 + auxint
|
{name: "ADDQconst", argLength: 1, reg: gp11sp, asm: "ADDQ", aux: "Int64", typ: "UInt64", clobberFlags: true, rematerializeable: true}, // arg0 + auxint
|
||||||
{name: "ADDLconst", argLength: 1, reg: gp11sp, asm: "ADDL", aux: "Int32", clobberFlags: true}, // arg0 + auxint
|
{name: "ADDLconst", argLength: 1, reg: gp11sp, asm: "ADDL", aux: "Int32", clobberFlags: true, rematerializeable: true}, // arg0 + auxint
|
||||||
{name: "ADDQconstmem", argLength: 2, reg: gpstoreconst, asm: "ADDQ", aux: "SymValAndOff", clobberFlags: true, faultOnNilArg0: true, symEffect: "Write"}, // add ValAndOff(AuxInt).Val() to arg0+ValAndOff(AuxInt).Off()+aux, arg1=mem
|
{name: "ADDQconstmem", argLength: 2, reg: gpstoreconst, asm: "ADDQ", aux: "SymValAndOff", clobberFlags: true, faultOnNilArg0: true, symEffect: "Write"}, // add ValAndOff(AuxInt).Val() to arg0+ValAndOff(AuxInt).Off()+aux, arg1=mem
|
||||||
{name: "ADDLconstmem", argLength: 2, reg: gpstoreconst, asm: "ADDL", aux: "SymValAndOff", clobberFlags: true, faultOnNilArg0: true, symEffect: "Write"}, // add ValAndOff(AuxInt).Val() to arg0+ValAndOff(AuxInt).Off()+aux, arg1=mem
|
{name: "ADDLconstmem", argLength: 2, reg: gpstoreconst, asm: "ADDL", aux: "SymValAndOff", clobberFlags: true, faultOnNilArg0: true, symEffect: "Write"}, // add ValAndOff(AuxInt).Val() to arg0+ValAndOff(AuxInt).Off()+aux, arg1=mem
|
||||||
|
|
||||||
|
@ -4852,6 +4852,7 @@ var opcodeTable = [...]opInfo{
|
|||||||
name: "ADDQconst",
|
name: "ADDQconst",
|
||||||
auxType: auxInt64,
|
auxType: auxInt64,
|
||||||
argLen: 1,
|
argLen: 1,
|
||||||
|
rematerializeable: true,
|
||||||
clobberFlags: true,
|
clobberFlags: true,
|
||||||
asm: x86.AADDQ,
|
asm: x86.AADDQ,
|
||||||
reg: regInfo{
|
reg: regInfo{
|
||||||
@ -4867,6 +4868,7 @@ var opcodeTable = [...]opInfo{
|
|||||||
name: "ADDLconst",
|
name: "ADDLconst",
|
||||||
auxType: auxInt32,
|
auxType: auxInt32,
|
||||||
argLen: 1,
|
argLen: 1,
|
||||||
|
rematerializeable: true,
|
||||||
clobberFlags: true,
|
clobberFlags: true,
|
||||||
asm: x86.AADDL,
|
asm: x86.AADDL,
|
||||||
reg: regInfo{
|
reg: regInfo{
|
||||||
|
Loading…
Reference in New Issue
Block a user