[dev.ssa] cmd/compile: more 386 port changes

Fix up zero/move code, including duff calls and rep movs.

Handle the new ops generated by dec64.rules.

Fix constant shifts.

Change-Id: I7d89194b29b04311bfafa0fd93b9f5644af04df9
Reviewed-on: https://go-review.googlesource.com/25033
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
Keith Randall 2016-07-18 15:52:59 -07:00
parent 1b0404c4ca
commit 4a33af6bb6
9 changed files with 550 additions and 274 deletions

View file

@ -285,8 +285,6 @@ const (
Op386MOVBstore
Op386MOVWstore
Op386MOVLstore
Op386MOVOload
Op386MOVOstore
Op386MOVBloadidx1
Op386MOVWloadidx1
Op386MOVWloadidx2
@ -306,7 +304,6 @@ const (
Op386MOVLstoreconstidx1
Op386MOVLstoreconstidx4
Op386DUFFZERO
Op386MOVOconst
Op386REPSTOSL
Op386CALLstatic
Op386CALLclosure
@ -3152,32 +3149,6 @@ var opcodeTable = [...]opInfo{
},
},
},
{
name: "MOVOload",
auxType: auxSymOff,
argLen: 2,
asm: x86.AMOVUPS,
reg: regInfo{
inputs: []inputInfo{
{0, 65791}, // AX CX DX BX SP BP SI DI SB
},
outputs: []outputInfo{
{0, 65280}, // X0 X1 X2 X3 X4 X5 X6 X7
},
},
},
{
name: "MOVOstore",
auxType: auxSymOff,
argLen: 3,
asm: x86.AMOVUPS,
reg: regInfo{
inputs: []inputInfo{
{1, 65280}, // X0 X1 X2 X3 X4 X5 X6 X7
{0, 65791}, // AX CX DX BX SP BP SI DI SB
},
},
},
{
name: "MOVBloadidx1",
auxType: auxSymOff,
@ -3418,22 +3389,11 @@ var opcodeTable = [...]opInfo{
reg: regInfo{
inputs: []inputInfo{
{0, 128}, // DI
{1, 256}, // X0
{1, 1}, // AX
},
clobbers: 131200, // DI FLAGS
},
},
{
name: "MOVOconst",
auxType: auxInt128,
argLen: 0,
rematerializeable: true,
reg: regInfo{
outputs: []outputInfo{
{0, 65280}, // X0 X1 X2 X3 X4 X5 X6 X7
},
},
},
{
name: "REPSTOSL",
argLen: 4,
@ -3502,7 +3462,7 @@ var opcodeTable = [...]opInfo{
{0, 128}, // DI
{1, 64}, // SI
},
clobbers: 131520, // SI DI X0 FLAGS
clobbers: 131266, // CX SI DI FLAGS
},
},
{