From: Todd Neal Date: Fri, 24 Jul 2015 01:01:40 +0000 (-0500) Subject: [dev.ssa] cmd/compile: implement LEAQ2/LEAQ4/LEAQ8 opcodes X-Git-Tag: go1.7beta1~1623^2^2~354 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d90e0481bf0c2f5ba13ed0ae1872b223f0c5ce9c;p=gostls13.git [dev.ssa] cmd/compile: implement LEAQ2/LEAQ4/LEAQ8 opcodes Change-Id: I8da76b9a4c5c80e8515e69e105d6349fe3ad9281 Reviewed-on: https://go-review.googlesource.com/12611 Reviewed-by: Keith Randall Reviewed-by: Josh Bleecher Snyder --- diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index d29da9d042..0ea5aa41f1 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -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