mirror of
https://github.com/golang/go
synced 2024-10-05 18:21:21 -06:00
[dev.ssa] cmd/compile: implement LEAQ2/LEAQ4/LEAQ8 opcodes
Change-Id: I8da76b9a4c5c80e8515e69e105d6349fe3ad9281 Reviewed-on: https://go-review.googlesource.com/12611 Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
This commit is contained in:
parent
851ceebceb
commit
d90e0481bf
@ -1538,11 +1538,20 @@ func genValue(v *ssa.Value) {
|
||||
p.From.Type = obj.TYPE_REG
|
||||
p.To.Type = obj.TYPE_REG
|
||||
p.To.Reg = r
|
||||
case ssa.OpAMD64LEAQ1:
|
||||
case ssa.OpAMD64LEAQ1, ssa.OpAMD64LEAQ2, ssa.OpAMD64LEAQ4, ssa.OpAMD64LEAQ8:
|
||||
p := Prog(x86.ALEAQ)
|
||||
p.From.Type = obj.TYPE_MEM
|
||||
p.From.Reg = regnum(v.Args[0])
|
||||
p.From.Scale = 1
|
||||
switch v.Op {
|
||||
case ssa.OpAMD64LEAQ1:
|
||||
p.From.Scale = 1
|
||||
case ssa.OpAMD64LEAQ2:
|
||||
p.From.Scale = 2
|
||||
case ssa.OpAMD64LEAQ4:
|
||||
p.From.Scale = 4
|
||||
case ssa.OpAMD64LEAQ8:
|
||||
p.From.Scale = 8
|
||||
}
|
||||
p.From.Index = regnum(v.Args[1])
|
||||
addAux(&p.From, v)
|
||||
p.To.Type = obj.TYPE_REG
|
||||
|
Loading…
Reference in New Issue
Block a user