cmd/compile/internal/ssa: replace {Defer,Go}Call with StaticCall

Passes toolstash-check -all.

Change-Id: Icf8b75364e4761a5e56567f503b2c1cb17382ed2
Reviewed-on: https://go-review.googlesource.com/38080
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
Matthew Dempsky 2017-03-10 17:42:02 -08:00
parent a51e4cc9ce
commit 08d8d5c986
37 changed files with 8 additions and 634 deletions

View file

@ -769,22 +769,6 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
if gc.Maxarg < v.AuxInt { if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt gc.Maxarg = v.AuxInt
} }
case ssa.OpAMD64CALLdefer:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Deferproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpAMD64CALLgo:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Newproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpAMD64CALLinter: case ssa.OpAMD64CALLinter:
p := gc.Prog(obj.ACALL) p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_REG p.To.Type = obj.TYPE_REG

View file

@ -652,22 +652,6 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
if gc.Maxarg < v.AuxInt { if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt gc.Maxarg = v.AuxInt
} }
case ssa.OpARMCALLdefer:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Deferproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpARMCALLgo:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Newproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpARMCALLinter: case ssa.OpARMCALLinter:
p := gc.Prog(obj.ACALL) p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM p.To.Type = obj.TYPE_MEM

View file

@ -649,22 +649,6 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
if gc.Maxarg < v.AuxInt { if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt gc.Maxarg = v.AuxInt
} }
case ssa.OpARM64CALLdefer:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Deferproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpARM64CALLgo:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Newproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpARM64CALLinter: case ssa.OpARM64CALLinter:
p := gc.Prog(obj.ACALL) p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM p.To.Type = obj.TYPE_MEM

View file

@ -3014,9 +3014,9 @@ func (s *state) call(n *Node, k callKind) *ssa.Value {
var call *ssa.Value var call *ssa.Value
switch { switch {
case k == callDefer: case k == callDefer:
call = s.newValue1(ssa.OpDeferCall, ssa.TypeMem, s.mem()) call = s.newValue1A(ssa.OpStaticCall, ssa.TypeMem, Deferproc, s.mem())
case k == callGo: case k == callGo:
call = s.newValue1(ssa.OpGoCall, ssa.TypeMem, s.mem()) call = s.newValue1A(ssa.OpStaticCall, ssa.TypeMem, Newproc, s.mem())
case closure != nil: case closure != nil:
codeptr = s.newValue2(ssa.OpLoad, Types[TUINTPTR], closure, s.mem()) codeptr = s.newValue2(ssa.OpLoad, Types[TUINTPTR], closure, s.mem())
call = s.newValue3(ssa.OpClosureCall, ssa.TypeMem, codeptr, closure, s.mem()) call = s.newValue3(ssa.OpClosureCall, ssa.TypeMem, codeptr, closure, s.mem())

View file

@ -504,22 +504,6 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
if gc.Maxarg < v.AuxInt { if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt gc.Maxarg = v.AuxInt
} }
case ssa.OpMIPSCALLdefer:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Deferproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpMIPSCALLgo:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Newproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpMIPSCALLinter: case ssa.OpMIPSCALLinter:
p := gc.Prog(obj.ACALL) p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM p.To.Type = obj.TYPE_MEM

View file

@ -507,22 +507,6 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
if gc.Maxarg < v.AuxInt { if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt gc.Maxarg = v.AuxInt
} }
case ssa.OpMIPS64CALLdefer:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Deferproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpMIPS64CALLgo:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Newproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpMIPS64CALLinter: case ssa.OpMIPS64CALLinter:
p := gc.Prog(obj.ACALL) p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM p.To.Type = obj.TYPE_MEM

View file

@ -1022,22 +1022,6 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
gc.Maxarg = v.AuxInt gc.Maxarg = v.AuxInt
} }
case ssa.OpPPC64CALLdefer:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Deferproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpPPC64CALLgo:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Newproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpPPC64LoweredNilCheck: case ssa.OpPPC64LoweredNilCheck:
// Issue a load which will fault if arg is nil. // Issue a load which will fault if arg is nil.
p := gc.Prog(ppc64.AMOVBZ) p := gc.Prog(ppc64.AMOVBZ)

View file

@ -507,22 +507,6 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
if gc.Maxarg < v.AuxInt { if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt gc.Maxarg = v.AuxInt
} }
case ssa.OpS390XCALLdefer:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Deferproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpS390XCALLgo:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Newproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.OpS390XCALLinter: case ssa.OpS390XCALLinter:
p := gc.Prog(obj.ACALL) p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_REG p.To.Type = obj.TYPE_REG

View file

@ -101,7 +101,7 @@ func (e Edge) Index() int {
// Exit return mem [] // Exit return mem []
// Plain nil [next] // Plain nil [next]
// If a boolean Value [then, else] // If a boolean Value [then, else]
// Defer mem [nopanic, panic] (control opcode should be OpDeferCall) // Defer mem [nopanic, panic] (control opcode should be OpStaticCall to runtime.deferproc)
type BlockKind int8 type BlockKind int8
// short form print // short form print

View file

@ -375,8 +375,6 @@
// Lowering calls // Lowering calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem) (StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem)
(ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem) (ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem)
(DeferCall [argwid] mem) -> (CALLdefer [argwid] mem)
(GoCall [argwid] mem) -> (CALLgo [argwid] mem)
(InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem) (InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem)
// Miscellaneous // Miscellaneous

View file

@ -391,8 +391,6 @@ func init() {
{name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem {name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem
{name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gpsp, buildReg("DX"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem {name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gpsp, buildReg("DX"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem
{name: "CALLdefer", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call deferproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLgo", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call newproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem {name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem
// arg0 = destination pointer // arg0 = destination pointer

View file

@ -426,8 +426,6 @@
// Lowering calls // Lowering calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem) (StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem)
(ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem) (ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem)
(DeferCall [argwid] mem) -> (CALLdefer [argwid] mem)
(GoCall [argwid] mem) -> (CALLgo [argwid] mem)
(InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem) (InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem)
// Miscellaneous // Miscellaneous

View file

@ -464,8 +464,6 @@ func init() {
{name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem {name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem
{name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gpsp, buildReg("DX"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem {name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gpsp, buildReg("DX"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem
{name: "CALLdefer", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call deferproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLgo", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call newproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem {name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem
// arg0 = destination pointer // arg0 = destination pointer

View file

@ -379,8 +379,6 @@
// calls // calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem) (StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem)
(ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem) (ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem)
(DeferCall [argwid] mem) -> (CALLdefer [argwid] mem)
(GoCall [argwid] mem) -> (CALLgo [argwid] mem)
(InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem) (InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem)
// checks // checks

View file

@ -447,8 +447,6 @@
// calls // calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem) (StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem)
(ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem) (ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem)
(DeferCall [argwid] mem) -> (CALLdefer [argwid] mem)
(GoCall [argwid] mem) -> (CALLgo [argwid] mem)
(InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem) (InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem)
// checks // checks

View file

@ -320,8 +320,6 @@ func init() {
// function calls // function calls
{name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem {name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem
{name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gpsp, buildReg("R26"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem {name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gpsp, buildReg("R26"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem
{name: "CALLdefer", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call deferproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLgo", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call newproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem {name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem
// pseudo-ops // pseudo-ops

View file

@ -376,8 +376,6 @@ func init() {
// function calls // function calls
{name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem {name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem
{name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gpsp, buildReg("R7"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem {name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gpsp, buildReg("R7"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem
{name: "CALLdefer", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call deferproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLgo", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call newproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem {name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem
// pseudo-ops // pseudo-ops

View file

@ -375,8 +375,6 @@
// calls // calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem) (StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem)
(ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem) (ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem)
(DeferCall [argwid] mem) -> (CALLdefer [argwid] mem)
(GoCall [argwid] mem) -> (CALLgo [argwid] mem)
(InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem) (InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem)
// atomic intrinsics // atomic intrinsics

View file

@ -417,8 +417,6 @@
// calls // calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem) (StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem)
(ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem) (ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem)
(DeferCall [argwid] mem) -> (CALLdefer [argwid] mem)
(GoCall [argwid] mem) -> (CALLgo [argwid] mem)
(InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem) (InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem)
// checks // checks

View file

@ -266,8 +266,6 @@ func init() {
// function calls // function calls
{name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem {name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem
{name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gpsp, buildReg("R22"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem {name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gpsp, buildReg("R22"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem
{name: "CALLdefer", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call deferproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLgo", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call newproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem {name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem
// duffzero // duffzero

View file

@ -249,10 +249,8 @@ func init() {
// function calls // function calls
{name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem {name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem
{name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gpsp, buildReg("R22"), 0}, clobbers: callerSave}, aux: "Int32", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem {name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gpsp, buildReg("R22"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem
{name: "CALLdefer", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int32", clobberFlags: true, call: true}, // call deferproc. arg0=mem, auxint=argsize, returns mem {name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem
{name: "CALLgo", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int32", clobberFlags: true, call: true}, // call newproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int32", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem
// atomic ops // atomic ops

View file

@ -588,8 +588,6 @@
// Lowering calls // Lowering calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem) (StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem)
(ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem) (ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem)
(DeferCall [argwid] mem) -> (CALLdefer [argwid] mem)
(GoCall [argwid] mem) -> (CALLgo [argwid] mem)
(InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem) (InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem)
// Miscellaneous // Miscellaneous

View file

@ -299,8 +299,6 @@ func init() {
{name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem {name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem
{name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gp | sp, ctxt, 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem {name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{gp | sp, ctxt, 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem
{name: "CALLdefer", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call deferproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLgo", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call newproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem {name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{gp}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem
// large or unaligned zeroing // large or unaligned zeroing

View file

@ -410,8 +410,6 @@
// Lowering calls // Lowering calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem) (StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} mem)
(ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem) (ClosureCall [argwid] entry closure mem) -> (CALLclosure [argwid] entry closure mem)
(DeferCall [argwid] mem) -> (CALLdefer [argwid] mem)
(GoCall [argwid] mem) -> (CALLgo [argwid] mem)
(InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem) (InterCall [argwid] entry mem) -> (CALLinter [argwid] entry mem)
// Miscellaneous // Miscellaneous

View file

@ -391,8 +391,6 @@ func init() {
{name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem {name: "CALLstatic", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "SymOff", clobberFlags: true, call: true}, // call static function aux.(*gc.Sym). arg0=mem, auxint=argsize, returns mem
{name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{ptrsp, buildReg("R12"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem {name: "CALLclosure", argLength: 3, reg: regInfo{inputs: []regMask{ptrsp, buildReg("R12"), 0}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call function via closure. arg0=codeptr, arg1=closure, arg2=mem, auxint=argsize, returns mem
{name: "CALLdefer", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call deferproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLgo", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call newproc. arg0=mem, auxint=argsize, returns mem
{name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{ptr}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem {name: "CALLinter", argLength: 2, reg: regInfo{inputs: []regMask{ptr}, clobbers: callerSave}, aux: "Int64", clobberFlags: true, call: true}, // call fn by pointer. arg0=codeptr, arg1=mem, auxint=argsize, returns mem
// (InvertFlags (CMP a b)) == (CMP b a) // (InvertFlags (CMP a b)) == (CMP b a)

View file

@ -303,8 +303,6 @@ var genericOps = []opData{
// as a phantom first argument. // as a phantom first argument.
{name: "ClosureCall", argLength: 3, aux: "Int64", call: true}, // arg0=code pointer, arg1=context ptr, arg2=memory. auxint=arg size. Returns memory. {name: "ClosureCall", argLength: 3, aux: "Int64", call: true}, // arg0=code pointer, arg1=context ptr, arg2=memory. auxint=arg size. Returns memory.
{name: "StaticCall", argLength: 1, aux: "SymOff", call: true}, // call function aux.(*gc.Sym), arg0=memory. auxint=arg size. Returns memory. {name: "StaticCall", argLength: 1, aux: "SymOff", call: true}, // call function aux.(*gc.Sym), arg0=memory. auxint=arg size. Returns memory.
{name: "DeferCall", argLength: 1, aux: "Int64", call: true}, // defer call. arg0=memory, auxint=arg size. Returns memory.
{name: "GoCall", argLength: 1, aux: "Int64", call: true}, // go call. arg0=memory, auxint=arg size. Returns memory.
{name: "InterCall", argLength: 2, aux: "Int64", call: true}, // interface call. arg0=code pointer, arg1=memory, auxint=arg size. Returns memory. {name: "InterCall", argLength: 2, aux: "Int64", call: true}, // interface call. arg0=code pointer, arg1=memory, auxint=arg size. Returns memory.
// Conversions: signed extensions, zero (unsigned) extensions, truncations // Conversions: signed extensions, zero (unsigned) extensions, truncations

View file

@ -387,8 +387,6 @@ const (
Op386REPSTOSL Op386REPSTOSL
Op386CALLstatic Op386CALLstatic
Op386CALLclosure Op386CALLclosure
Op386CALLdefer
Op386CALLgo
Op386CALLinter Op386CALLinter
Op386DUFFCOPY Op386DUFFCOPY
Op386REPMOVSL Op386REPMOVSL
@ -626,8 +624,6 @@ const (
OpAMD64REPSTOSQ OpAMD64REPSTOSQ
OpAMD64CALLstatic OpAMD64CALLstatic
OpAMD64CALLclosure OpAMD64CALLclosure
OpAMD64CALLdefer
OpAMD64CALLgo
OpAMD64CALLinter OpAMD64CALLinter
OpAMD64DUFFCOPY OpAMD64DUFFCOPY
OpAMD64REPMOVSQ OpAMD64REPMOVSQ
@ -853,8 +849,6 @@ const (
OpARMSRAcond OpARMSRAcond
OpARMCALLstatic OpARMCALLstatic
OpARMCALLclosure OpARMCALLclosure
OpARMCALLdefer
OpARMCALLgo
OpARMCALLinter OpARMCALLinter
OpARMLoweredNilCheck OpARMLoweredNilCheck
OpARMEqual OpARMEqual
@ -1018,8 +1012,6 @@ const (
OpARM64CSELULT0 OpARM64CSELULT0
OpARM64CALLstatic OpARM64CALLstatic
OpARM64CALLclosure OpARM64CALLclosure
OpARM64CALLdefer
OpARM64CALLgo
OpARM64CALLinter OpARM64CALLinter
OpARM64LoweredNilCheck OpARM64LoweredNilCheck
OpARM64Equal OpARM64Equal
@ -1140,8 +1132,6 @@ const (
OpMIPSMOVDF OpMIPSMOVDF
OpMIPSCALLstatic OpMIPSCALLstatic
OpMIPSCALLclosure OpMIPSCALLclosure
OpMIPSCALLdefer
OpMIPSCALLgo
OpMIPSCALLinter OpMIPSCALLinter
OpMIPSLoweredAtomicLoad OpMIPSLoweredAtomicLoad
OpMIPSLoweredAtomicStore OpMIPSLoweredAtomicStore
@ -1246,8 +1236,6 @@ const (
OpMIPS64MOVDF OpMIPS64MOVDF
OpMIPS64CALLstatic OpMIPS64CALLstatic
OpMIPS64CALLclosure OpMIPS64CALLclosure
OpMIPS64CALLdefer
OpMIPS64CALLgo
OpMIPS64CALLinter OpMIPS64CALLinter
OpMIPS64DUFFZERO OpMIPS64DUFFZERO
OpMIPS64LoweredZero OpMIPS64LoweredZero
@ -1366,8 +1354,6 @@ const (
OpPPC64MOVDconvert OpPPC64MOVDconvert
OpPPC64CALLstatic OpPPC64CALLstatic
OpPPC64CALLclosure OpPPC64CALLclosure
OpPPC64CALLdefer
OpPPC64CALLgo
OpPPC64CALLinter OpPPC64CALLinter
OpPPC64LoweredZero OpPPC64LoweredZero
OpPPC64LoweredMove OpPPC64LoweredMove
@ -1560,8 +1546,6 @@ const (
OpS390XCLEAR OpS390XCLEAR
OpS390XCALLstatic OpS390XCALLstatic
OpS390XCALLclosure OpS390XCALLclosure
OpS390XCALLdefer
OpS390XCALLgo
OpS390XCALLinter OpS390XCALLinter
OpS390XInvertFlags OpS390XInvertFlags
OpS390XLoweredGetG OpS390XLoweredGetG
@ -1809,8 +1793,6 @@ const (
OpZeroWB OpZeroWB
OpClosureCall OpClosureCall
OpStaticCall OpStaticCall
OpDeferCall
OpGoCall
OpInterCall OpInterCall
OpSignExt8to16 OpSignExt8to16
OpSignExt8to32 OpSignExt8to32
@ -4105,26 +4087,6 @@ var opcodeTable = [...]opInfo{
clobbers: 65519, // AX CX DX BX BP SI DI X0 X1 X2 X3 X4 X5 X6 X7 clobbers: 65519, // AX CX DX BX BP SI DI X0 X1 X2 X3 X4 X5 X6 X7
}, },
}, },
{
name: "CALLdefer",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 65519, // AX CX DX BX BP SI DI X0 X1 X2 X3 X4 X5 X6 X7
},
},
{
name: "CALLgo",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 65519, // AX CX DX BX BP SI DI X0 X1 X2 X3 X4 X5 X6 X7
},
},
{ {
name: "CALLinter", name: "CALLinter",
auxType: auxInt64, auxType: auxInt64,
@ -7376,26 +7338,6 @@ var opcodeTable = [...]opInfo{
clobbers: 4294967279, // AX CX DX BX BP SI DI R8 R9 R10 R11 R12 R13 R14 R15 X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 clobbers: 4294967279, // AX CX DX BX BP SI DI R8 R9 R10 R11 R12 R13 R14 R15 X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15
}, },
}, },
{
name: "CALLdefer",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 4294967279, // AX CX DX BX BP SI DI R8 R9 R10 R11 R12 R13 R14 R15 X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15
},
},
{
name: "CALLgo",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 4294967279, // AX CX DX BX BP SI DI R8 R9 R10 R11 R12 R13 R14 R15 X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15
},
},
{ {
name: "CALLinter", name: "CALLinter",
auxType: auxInt64, auxType: auxInt64,
@ -10534,26 +10476,6 @@ var opcodeTable = [...]opInfo{
clobbers: 4294924287, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 clobbers: 4294924287, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
}, },
}, },
{
name: "CALLdefer",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 4294924287, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
},
},
{
name: "CALLgo",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 4294924287, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
},
},
{ {
name: "CALLinter", name: "CALLinter",
auxType: auxInt64, auxType: auxInt64,
@ -12654,26 +12576,6 @@ var opcodeTable = [...]opInfo{
clobbers: 9223372035512336383, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 clobbers: 9223372035512336383, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
}, },
}, },
{
name: "CALLdefer",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 9223372035512336383, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
},
},
{
name: "CALLgo",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 9223372035512336383, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
},
},
{ {
name: "CALLinter", name: "CALLinter",
auxType: auxInt64, auxType: auxInt64,
@ -14194,7 +14096,7 @@ var opcodeTable = [...]opInfo{
}, },
{ {
name: "CALLclosure", name: "CALLclosure",
auxType: auxInt32, auxType: auxInt64,
argLen: 3, argLen: 3,
clobberFlags: true, clobberFlags: true,
call: true, call: true,
@ -14206,29 +14108,9 @@ var opcodeTable = [...]opInfo{
clobbers: 140737421246462, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31 F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30 HI LO clobbers: 140737421246462, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31 F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30 HI LO
}, },
}, },
{
name: "CALLdefer",
auxType: auxInt32,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 140737421246462, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31 F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30 HI LO
},
},
{
name: "CALLgo",
auxType: auxInt32,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 140737421246462, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31 F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30 HI LO
},
},
{ {
name: "CALLinter", name: "CALLinter",
auxType: auxInt32, auxType: auxInt64,
argLen: 2, argLen: 2,
clobberFlags: true, clobberFlags: true,
call: true, call: true,
@ -15611,26 +15493,6 @@ var opcodeTable = [...]opInfo{
clobbers: 4611686018393833470, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 HI LO clobbers: 4611686018393833470, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 HI LO
}, },
}, },
{
name: "CALLdefer",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 4611686018393833470, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 HI LO
},
},
{
name: "CALLgo",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 4611686018393833470, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 HI LO
},
},
{ {
name: "CALLinter", name: "CALLinter",
auxType: auxInt64, auxType: auxInt64,
@ -17140,26 +17002,6 @@ var opcodeTable = [...]opInfo{
clobbers: 576460745860964344, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 g F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 clobbers: 576460745860964344, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 g F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26
}, },
}, },
{
name: "CALLdefer",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 576460745860964344, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 g F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26
},
},
{
name: "CALLgo",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 576460745860964344, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 g F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26
},
},
{ {
name: "CALLinter", name: "CALLinter",
auxType: auxInt64, auxType: auxInt64,
@ -19927,26 +19769,6 @@ var opcodeTable = [...]opInfo{
clobbers: 4294923263, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 clobbers: 4294923263, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
}, },
}, },
{
name: "CALLdefer",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 4294923263, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
},
},
{
name: "CALLgo",
auxType: auxInt64,
argLen: 1,
clobberFlags: true,
call: true,
reg: regInfo{
clobbers: 4294923263, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
},
},
{ {
name: "CALLinter", name: "CALLinter",
auxType: auxInt64, auxType: auxInt64,
@ -21490,20 +21312,6 @@ var opcodeTable = [...]opInfo{
call: true, call: true,
generic: true, generic: true,
}, },
{
name: "DeferCall",
auxType: auxInt64,
argLen: 1,
call: true,
generic: true,
},
{
name: "GoCall",
auxType: auxInt64,
argLen: 1,
call: true,
generic: true,
},
{ {
name: "InterCall", name: "InterCall",
auxType: auxInt64, auxType: auxInt64,

View file

@ -276,8 +276,6 @@ func rewriteValue386(v *Value, config *Config) bool {
return rewriteValue386_OpCvt64Fto32(v, config) return rewriteValue386_OpCvt64Fto32(v, config)
case OpCvt64Fto32F: case OpCvt64Fto32F:
return rewriteValue386_OpCvt64Fto32F(v, config) return rewriteValue386_OpCvt64Fto32F(v, config)
case OpDeferCall:
return rewriteValue386_OpDeferCall(v, config)
case OpDiv16: case OpDiv16:
return rewriteValue386_OpDiv16(v, config) return rewriteValue386_OpDiv16(v, config)
case OpDiv16u: case OpDiv16u:
@ -328,8 +326,6 @@ func rewriteValue386(v *Value, config *Config) bool {
return rewriteValue386_OpGetClosurePtr(v, config) return rewriteValue386_OpGetClosurePtr(v, config)
case OpGetG: case OpGetG:
return rewriteValue386_OpGetG(v, config) return rewriteValue386_OpGetG(v, config)
case OpGoCall:
return rewriteValue386_OpGoCall(v, config)
case OpGreater16: case OpGreater16:
return rewriteValue386_OpGreater16(v, config) return rewriteValue386_OpGreater16(v, config)
case OpGreater16U: case OpGreater16U:
@ -9983,21 +9979,6 @@ func rewriteValue386_OpCvt64Fto32F(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValue386_OpDeferCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (DeferCall [argwid] mem)
// cond:
// result: (CALLdefer [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(Op386CALLdefer)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValue386_OpDiv16(v *Value, config *Config) bool { func rewriteValue386_OpDiv16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b
@ -10405,21 +10386,6 @@ func rewriteValue386_OpGetG(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValue386_OpGoCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (GoCall [argwid] mem)
// cond:
// result: (CALLgo [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(Op386CALLgo)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValue386_OpGreater16(v *Value, config *Config) bool { func rewriteValue386_OpGreater16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b

View file

@ -426,8 +426,6 @@ func rewriteValueAMD64(v *Value, config *Config) bool {
return rewriteValueAMD64_OpCvt64to32F(v, config) return rewriteValueAMD64_OpCvt64to32F(v, config)
case OpCvt64to64F: case OpCvt64to64F:
return rewriteValueAMD64_OpCvt64to64F(v, config) return rewriteValueAMD64_OpCvt64to64F(v, config)
case OpDeferCall:
return rewriteValueAMD64_OpDeferCall(v, config)
case OpDiv128u: case OpDiv128u:
return rewriteValueAMD64_OpDiv128u(v, config) return rewriteValueAMD64_OpDiv128u(v, config)
case OpDiv16: case OpDiv16:
@ -490,8 +488,6 @@ func rewriteValueAMD64(v *Value, config *Config) bool {
return rewriteValueAMD64_OpGetClosurePtr(v, config) return rewriteValueAMD64_OpGetClosurePtr(v, config)
case OpGetG: case OpGetG:
return rewriteValueAMD64_OpGetG(v, config) return rewriteValueAMD64_OpGetG(v, config)
case OpGoCall:
return rewriteValueAMD64_OpGoCall(v, config)
case OpGreater16: case OpGreater16:
return rewriteValueAMD64_OpGreater16(v, config) return rewriteValueAMD64_OpGreater16(v, config)
case OpGreater16U: case OpGreater16U:
@ -18085,21 +18081,6 @@ func rewriteValueAMD64_OpCvt64to64F(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValueAMD64_OpDeferCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (DeferCall [argwid] mem)
// cond:
// result: (CALLdefer [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpAMD64CALLdefer)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValueAMD64_OpDiv128u(v *Value, config *Config) bool { func rewriteValueAMD64_OpDiv128u(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b
@ -18641,21 +18622,6 @@ func rewriteValueAMD64_OpGetG(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValueAMD64_OpGoCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (GoCall [argwid] mem)
// cond:
// result: (CALLgo [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpAMD64CALLgo)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValueAMD64_OpGreater16(v *Value, config *Config) bool { func rewriteValueAMD64_OpGreater16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b

View file

@ -410,8 +410,6 @@ func rewriteValueARM(v *Value, config *Config) bool {
return rewriteValueARM_OpCvt64Fto32F(v, config) return rewriteValueARM_OpCvt64Fto32F(v, config)
case OpCvt64Fto32U: case OpCvt64Fto32U:
return rewriteValueARM_OpCvt64Fto32U(v, config) return rewriteValueARM_OpCvt64Fto32U(v, config)
case OpDeferCall:
return rewriteValueARM_OpDeferCall(v, config)
case OpDiv16: case OpDiv16:
return rewriteValueARM_OpDiv16(v, config) return rewriteValueARM_OpDiv16(v, config)
case OpDiv16u: case OpDiv16u:
@ -460,8 +458,6 @@ func rewriteValueARM(v *Value, config *Config) bool {
return rewriteValueARM_OpGeq8U(v, config) return rewriteValueARM_OpGeq8U(v, config)
case OpGetClosurePtr: case OpGetClosurePtr:
return rewriteValueARM_OpGetClosurePtr(v, config) return rewriteValueARM_OpGetClosurePtr(v, config)
case OpGoCall:
return rewriteValueARM_OpGoCall(v, config)
case OpGreater16: case OpGreater16:
return rewriteValueARM_OpGreater16(v, config) return rewriteValueARM_OpGreater16(v, config)
case OpGreater16U: case OpGreater16U:
@ -13388,21 +13384,6 @@ func rewriteValueARM_OpCvt64Fto32U(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValueARM_OpDeferCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (DeferCall [argwid] mem)
// cond:
// result: (CALLdefer [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpARMCALLdefer)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValueARM_OpDiv16(v *Value, config *Config) bool { func rewriteValueARM_OpDiv16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b
@ -13871,21 +13852,6 @@ func rewriteValueARM_OpGetClosurePtr(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValueARM_OpGoCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (GoCall [argwid] mem)
// cond:
// result: (CALLgo [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpARMCALLgo)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValueARM_OpGreater16(v *Value, config *Config) bool { func rewriteValueARM_OpGreater16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b

View file

@ -322,8 +322,6 @@ func rewriteValueARM64(v *Value, config *Config) bool {
return rewriteValueARM64_OpCvt64to32F(v, config) return rewriteValueARM64_OpCvt64to32F(v, config)
case OpCvt64to64F: case OpCvt64to64F:
return rewriteValueARM64_OpCvt64to64F(v, config) return rewriteValueARM64_OpCvt64to64F(v, config)
case OpDeferCall:
return rewriteValueARM64_OpDeferCall(v, config)
case OpDiv16: case OpDiv16:
return rewriteValueARM64_OpDiv16(v, config) return rewriteValueARM64_OpDiv16(v, config)
case OpDiv16u: case OpDiv16u:
@ -382,8 +380,6 @@ func rewriteValueARM64(v *Value, config *Config) bool {
return rewriteValueARM64_OpGeq8U(v, config) return rewriteValueARM64_OpGeq8U(v, config)
case OpGetClosurePtr: case OpGetClosurePtr:
return rewriteValueARM64_OpGetClosurePtr(v, config) return rewriteValueARM64_OpGetClosurePtr(v, config)
case OpGoCall:
return rewriteValueARM64_OpGoCall(v, config)
case OpGreater16: case OpGreater16:
return rewriteValueARM64_OpGreater16(v, config) return rewriteValueARM64_OpGreater16(v, config)
case OpGreater16U: case OpGreater16U:
@ -10141,21 +10137,6 @@ func rewriteValueARM64_OpCvt64to64F(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValueARM64_OpDeferCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (DeferCall [argwid] mem)
// cond:
// result: (CALLdefer [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpARM64CALLdefer)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValueARM64_OpDiv16(v *Value, config *Config) bool { func rewriteValueARM64_OpDiv16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b
@ -10666,21 +10647,6 @@ func rewriteValueARM64_OpGetClosurePtr(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValueARM64_OpGoCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (GoCall [argwid] mem)
// cond:
// result: (CALLgo [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpARM64CALLgo)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValueARM64_OpGreater16(v *Value, config *Config) bool { func rewriteValueARM64_OpGreater16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b

View file

@ -90,8 +90,6 @@ func rewriteValueMIPS(v *Value, config *Config) bool {
return rewriteValueMIPS_OpCvt64Fto32(v, config) return rewriteValueMIPS_OpCvt64Fto32(v, config)
case OpCvt64Fto32F: case OpCvt64Fto32F:
return rewriteValueMIPS_OpCvt64Fto32F(v, config) return rewriteValueMIPS_OpCvt64Fto32F(v, config)
case OpDeferCall:
return rewriteValueMIPS_OpDeferCall(v, config)
case OpDiv16: case OpDiv16:
return rewriteValueMIPS_OpDiv16(v, config) return rewriteValueMIPS_OpDiv16(v, config)
case OpDiv16u: case OpDiv16u:
@ -140,8 +138,6 @@ func rewriteValueMIPS(v *Value, config *Config) bool {
return rewriteValueMIPS_OpGeq8U(v, config) return rewriteValueMIPS_OpGeq8U(v, config)
case OpGetClosurePtr: case OpGetClosurePtr:
return rewriteValueMIPS_OpGetClosurePtr(v, config) return rewriteValueMIPS_OpGetClosurePtr(v, config)
case OpGoCall:
return rewriteValueMIPS_OpGoCall(v, config)
case OpGreater16: case OpGreater16:
return rewriteValueMIPS_OpGreater16(v, config) return rewriteValueMIPS_OpGreater16(v, config)
case OpGreater16U: case OpGreater16U:
@ -1282,21 +1278,6 @@ func rewriteValueMIPS_OpCvt64Fto32F(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValueMIPS_OpDeferCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (DeferCall [argwid] mem)
// cond:
// result: (CALLdefer [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpMIPSCALLdefer)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValueMIPS_OpDiv16(v *Value, config *Config) bool { func rewriteValueMIPS_OpDiv16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b
@ -1746,21 +1727,6 @@ func rewriteValueMIPS_OpGetClosurePtr(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValueMIPS_OpGoCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (GoCall [argwid] mem)
// cond:
// result: (CALLgo [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpMIPSCALLgo)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValueMIPS_OpGreater16(v *Value, config *Config) bool { func rewriteValueMIPS_OpGreater16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b

View file

@ -84,8 +84,6 @@ func rewriteValueMIPS64(v *Value, config *Config) bool {
return rewriteValueMIPS64_OpCvt64to32F(v, config) return rewriteValueMIPS64_OpCvt64to32F(v, config)
case OpCvt64to64F: case OpCvt64to64F:
return rewriteValueMIPS64_OpCvt64to64F(v, config) return rewriteValueMIPS64_OpCvt64to64F(v, config)
case OpDeferCall:
return rewriteValueMIPS64_OpDeferCall(v, config)
case OpDiv16: case OpDiv16:
return rewriteValueMIPS64_OpDiv16(v, config) return rewriteValueMIPS64_OpDiv16(v, config)
case OpDiv16u: case OpDiv16u:
@ -144,8 +142,6 @@ func rewriteValueMIPS64(v *Value, config *Config) bool {
return rewriteValueMIPS64_OpGeq8U(v, config) return rewriteValueMIPS64_OpGeq8U(v, config)
case OpGetClosurePtr: case OpGetClosurePtr:
return rewriteValueMIPS64_OpGetClosurePtr(v, config) return rewriteValueMIPS64_OpGetClosurePtr(v, config)
case OpGoCall:
return rewriteValueMIPS64_OpGoCall(v, config)
case OpGreater16: case OpGreater16:
return rewriteValueMIPS64_OpGreater16(v, config) return rewriteValueMIPS64_OpGreater16(v, config)
case OpGreater16U: case OpGreater16U:
@ -1117,21 +1113,6 @@ func rewriteValueMIPS64_OpCvt64to64F(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValueMIPS64_OpDeferCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (DeferCall [argwid] mem)
// cond:
// result: (CALLdefer [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpMIPS64CALLdefer)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValueMIPS64_OpDiv16(v *Value, config *Config) bool { func rewriteValueMIPS64_OpDiv16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b
@ -1717,21 +1698,6 @@ func rewriteValueMIPS64_OpGetClosurePtr(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValueMIPS64_OpGoCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (GoCall [argwid] mem)
// cond:
// result: (CALLgo [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpMIPS64CALLgo)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValueMIPS64_OpGreater16(v *Value, config *Config) bool { func rewriteValueMIPS64_OpGreater16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b

View file

@ -110,8 +110,6 @@ func rewriteValuePPC64(v *Value, config *Config) bool {
return rewriteValuePPC64_OpCvt64to32F(v, config) return rewriteValuePPC64_OpCvt64to32F(v, config)
case OpCvt64to64F: case OpCvt64to64F:
return rewriteValuePPC64_OpCvt64to64F(v, config) return rewriteValuePPC64_OpCvt64to64F(v, config)
case OpDeferCall:
return rewriteValuePPC64_OpDeferCall(v, config)
case OpDiv16: case OpDiv16:
return rewriteValuePPC64_OpDiv16(v, config) return rewriteValuePPC64_OpDiv16(v, config)
case OpDiv16u: case OpDiv16u:
@ -170,8 +168,6 @@ func rewriteValuePPC64(v *Value, config *Config) bool {
return rewriteValuePPC64_OpGeq8U(v, config) return rewriteValuePPC64_OpGeq8U(v, config)
case OpGetClosurePtr: case OpGetClosurePtr:
return rewriteValuePPC64_OpGetClosurePtr(v, config) return rewriteValuePPC64_OpGetClosurePtr(v, config)
case OpGoCall:
return rewriteValuePPC64_OpGoCall(v, config)
case OpGreater16: case OpGreater16:
return rewriteValuePPC64_OpGreater16(v, config) return rewriteValuePPC64_OpGreater16(v, config)
case OpGreater16U: case OpGreater16U:
@ -1379,21 +1375,6 @@ func rewriteValuePPC64_OpCvt64to64F(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValuePPC64_OpDeferCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (DeferCall [argwid] mem)
// cond:
// result: (CALLdefer [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpPPC64CALLdefer)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValuePPC64_OpDiv16(v *Value, config *Config) bool { func rewriteValuePPC64_OpDiv16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b
@ -1942,21 +1923,6 @@ func rewriteValuePPC64_OpGetClosurePtr(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValuePPC64_OpGoCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (GoCall [argwid] mem)
// cond:
// result: (CALLgo [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpPPC64CALLgo)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValuePPC64_OpGreater16(v *Value, config *Config) bool { func rewriteValuePPC64_OpGreater16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b

View file

@ -116,8 +116,6 @@ func rewriteValueS390X(v *Value, config *Config) bool {
return rewriteValueS390X_OpCvt64to32F(v, config) return rewriteValueS390X_OpCvt64to32F(v, config)
case OpCvt64to64F: case OpCvt64to64F:
return rewriteValueS390X_OpCvt64to64F(v, config) return rewriteValueS390X_OpCvt64to64F(v, config)
case OpDeferCall:
return rewriteValueS390X_OpDeferCall(v, config)
case OpDiv16: case OpDiv16:
return rewriteValueS390X_OpDiv16(v, config) return rewriteValueS390X_OpDiv16(v, config)
case OpDiv16u: case OpDiv16u:
@ -178,8 +176,6 @@ func rewriteValueS390X(v *Value, config *Config) bool {
return rewriteValueS390X_OpGetClosurePtr(v, config) return rewriteValueS390X_OpGetClosurePtr(v, config)
case OpGetG: case OpGetG:
return rewriteValueS390X_OpGetG(v, config) return rewriteValueS390X_OpGetG(v, config)
case OpGoCall:
return rewriteValueS390X_OpGoCall(v, config)
case OpGreater16: case OpGreater16:
return rewriteValueS390X_OpGreater16(v, config) return rewriteValueS390X_OpGreater16(v, config)
case OpGreater16U: case OpGreater16U:
@ -1545,21 +1541,6 @@ func rewriteValueS390X_OpCvt64to64F(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValueS390X_OpDeferCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (DeferCall [argwid] mem)
// cond:
// result: (CALLdefer [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpS390XCALLdefer)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValueS390X_OpDiv16(v *Value, config *Config) bool { func rewriteValueS390X_OpDiv16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b
@ -2196,21 +2177,6 @@ func rewriteValueS390X_OpGetG(v *Value, config *Config) bool {
return true return true
} }
} }
func rewriteValueS390X_OpGoCall(v *Value, config *Config) bool {
b := v.Block
_ = b
// match: (GoCall [argwid] mem)
// cond:
// result: (CALLgo [argwid] mem)
for {
argwid := v.AuxInt
mem := v.Args[0]
v.reset(OpS390XCALLgo)
v.AuxInt = argwid
v.AddArg(mem)
return true
}
}
func rewriteValueS390X_OpGreater16(v *Value, config *Config) bool { func rewriteValueS390X_OpGreater16(v *Value, config *Config) bool {
b := v.Block b := v.Block
_ = b _ = b

View file

@ -298,7 +298,7 @@ func ssaGenValue387(s *gc.SSAGenState, v *ssa.Value) bool {
popAndSave(s, v) popAndSave(s, v)
return true return true
case ssa.Op386CALLstatic, ssa.Op386CALLclosure, ssa.Op386CALLdefer, ssa.Op386CALLgo, ssa.Op386CALLinter: case ssa.Op386CALLstatic, ssa.Op386CALLclosure, ssa.Op386CALLinter:
flush387(s) // Calls must empty the FP stack. flush387(s) // Calls must empty the FP stack.
return false // then issue the call as normal return false // then issue the call as normal
} }

View file

@ -695,22 +695,6 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
if gc.Maxarg < v.AuxInt { if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt gc.Maxarg = v.AuxInt
} }
case ssa.Op386CALLdefer:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Deferproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.Op386CALLgo:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
p.To.Name = obj.NAME_EXTERN
p.To.Sym = gc.Newproc
if gc.Maxarg < v.AuxInt {
gc.Maxarg = v.AuxInt
}
case ssa.Op386CALLinter: case ssa.Op386CALLinter:
p := gc.Prog(obj.ACALL) p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_REG p.To.Type = obj.TYPE_REG