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>
if 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:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_REG
if 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:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
if 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:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
var call *ssa.Value
switch {
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:
- call = s.newValue1(ssa.OpGoCall, ssa.TypeMem, s.mem())
+ call = s.newValue1A(ssa.OpStaticCall, ssa.TypeMem, Newproc, s.mem())
case closure != nil:
codeptr = s.newValue2(ssa.OpLoad, Types[TUINTPTR], closure, s.mem())
call = s.newValue3(ssa.OpClosureCall, ssa.TypeMem, codeptr, closure, s.mem())
if 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:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
if 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:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_MEM
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:
// Issue a load which will fault if arg is nil.
p := gc.Prog(ppc64.AMOVBZ)
if 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:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_REG
// Exit return mem []
// Plain nil [next]
// 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
// short form print
// Lowering calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} 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)
// Miscellaneous
{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: "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
// arg0 = destination pointer
// Lowering calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} 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)
// Miscellaneous
{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: "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
// arg0 = destination pointer
// calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} 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)
// checks
// calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} 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)
// checks
// 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: "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
// pseudo-ops
// 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: "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
// pseudo-ops
// calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} 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)
// atomic intrinsics
// calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} 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)
// checks
// 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: "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
// duffzero
// 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: "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: "CALLdefer", argLength: 1, reg: regInfo{clobbers: callerSave}, aux: "Int32", clobberFlags: true, call: true}, // call deferproc. arg0=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
+ {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: "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
// atomic ops
// Lowering calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} 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)
// Miscellaneous
{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: "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
// large or unaligned zeroing
// Lowering calls
(StaticCall [argwid] {target} mem) -> (CALLstatic [argwid] {target} 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)
// Miscellaneous
{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: "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
// (InvertFlags (CMP a b)) == (CMP b a)
// 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: "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.
// Conversions: signed extensions, zero (unsigned) extensions, truncations
Op386REPSTOSL
Op386CALLstatic
Op386CALLclosure
- Op386CALLdefer
- Op386CALLgo
Op386CALLinter
Op386DUFFCOPY
Op386REPMOVSL
OpAMD64REPSTOSQ
OpAMD64CALLstatic
OpAMD64CALLclosure
- OpAMD64CALLdefer
- OpAMD64CALLgo
OpAMD64CALLinter
OpAMD64DUFFCOPY
OpAMD64REPMOVSQ
OpARMSRAcond
OpARMCALLstatic
OpARMCALLclosure
- OpARMCALLdefer
- OpARMCALLgo
OpARMCALLinter
OpARMLoweredNilCheck
OpARMEqual
OpARM64CSELULT0
OpARM64CALLstatic
OpARM64CALLclosure
- OpARM64CALLdefer
- OpARM64CALLgo
OpARM64CALLinter
OpARM64LoweredNilCheck
OpARM64Equal
OpMIPSMOVDF
OpMIPSCALLstatic
OpMIPSCALLclosure
- OpMIPSCALLdefer
- OpMIPSCALLgo
OpMIPSCALLinter
OpMIPSLoweredAtomicLoad
OpMIPSLoweredAtomicStore
OpMIPS64MOVDF
OpMIPS64CALLstatic
OpMIPS64CALLclosure
- OpMIPS64CALLdefer
- OpMIPS64CALLgo
OpMIPS64CALLinter
OpMIPS64DUFFZERO
OpMIPS64LoweredZero
OpPPC64MOVDconvert
OpPPC64CALLstatic
OpPPC64CALLclosure
- OpPPC64CALLdefer
- OpPPC64CALLgo
OpPPC64CALLinter
OpPPC64LoweredZero
OpPPC64LoweredMove
OpS390XCLEAR
OpS390XCALLstatic
OpS390XCALLclosure
- OpS390XCALLdefer
- OpS390XCALLgo
OpS390XCALLinter
OpS390XInvertFlags
OpS390XLoweredGetG
OpZeroWB
OpClosureCall
OpStaticCall
- OpDeferCall
- OpGoCall
OpInterCall
OpSignExt8to16
OpSignExt8to32
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",
auxType: auxInt64,
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",
auxType: auxInt64,
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",
auxType: auxInt64,
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",
auxType: auxInt64,
},
{
name: "CALLclosure",
- auxType: auxInt32,
+ auxType: auxInt64,
argLen: 3,
clobberFlags: true,
call: true,
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",
- auxType: auxInt32,
+ auxType: auxInt64,
argLen: 2,
clobberFlags: true,
call: true,
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",
auxType: auxInt64,
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",
auxType: auxInt64,
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",
auxType: auxInt64,
call: 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",
auxType: auxInt64,
return rewriteValue386_OpCvt64Fto32(v, config)
case OpCvt64Fto32F:
return rewriteValue386_OpCvt64Fto32F(v, config)
- case OpDeferCall:
- return rewriteValue386_OpDeferCall(v, config)
case OpDiv16:
return rewriteValue386_OpDiv16(v, config)
case OpDiv16u:
return rewriteValue386_OpGetClosurePtr(v, config)
case OpGetG:
return rewriteValue386_OpGetG(v, config)
- case OpGoCall:
- return rewriteValue386_OpGoCall(v, config)
case OpGreater16:
return rewriteValue386_OpGreater16(v, config)
case OpGreater16U:
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 {
b := v.Block
_ = b
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 {
b := v.Block
_ = b
return rewriteValueAMD64_OpCvt64to32F(v, config)
case OpCvt64to64F:
return rewriteValueAMD64_OpCvt64to64F(v, config)
- case OpDeferCall:
- return rewriteValueAMD64_OpDeferCall(v, config)
case OpDiv128u:
return rewriteValueAMD64_OpDiv128u(v, config)
case OpDiv16:
return rewriteValueAMD64_OpGetClosurePtr(v, config)
case OpGetG:
return rewriteValueAMD64_OpGetG(v, config)
- case OpGoCall:
- return rewriteValueAMD64_OpGoCall(v, config)
case OpGreater16:
return rewriteValueAMD64_OpGreater16(v, config)
case OpGreater16U:
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 {
b := v.Block
_ = b
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 {
b := v.Block
_ = b
return rewriteValueARM_OpCvt64Fto32F(v, config)
case OpCvt64Fto32U:
return rewriteValueARM_OpCvt64Fto32U(v, config)
- case OpDeferCall:
- return rewriteValueARM_OpDeferCall(v, config)
case OpDiv16:
return rewriteValueARM_OpDiv16(v, config)
case OpDiv16u:
return rewriteValueARM_OpGeq8U(v, config)
case OpGetClosurePtr:
return rewriteValueARM_OpGetClosurePtr(v, config)
- case OpGoCall:
- return rewriteValueARM_OpGoCall(v, config)
case OpGreater16:
return rewriteValueARM_OpGreater16(v, config)
case OpGreater16U:
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 {
b := v.Block
_ = b
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 {
b := v.Block
_ = b
return rewriteValueARM64_OpCvt64to32F(v, config)
case OpCvt64to64F:
return rewriteValueARM64_OpCvt64to64F(v, config)
- case OpDeferCall:
- return rewriteValueARM64_OpDeferCall(v, config)
case OpDiv16:
return rewriteValueARM64_OpDiv16(v, config)
case OpDiv16u:
return rewriteValueARM64_OpGeq8U(v, config)
case OpGetClosurePtr:
return rewriteValueARM64_OpGetClosurePtr(v, config)
- case OpGoCall:
- return rewriteValueARM64_OpGoCall(v, config)
case OpGreater16:
return rewriteValueARM64_OpGreater16(v, config)
case OpGreater16U:
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 {
b := v.Block
_ = b
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 {
b := v.Block
_ = b
return rewriteValueMIPS_OpCvt64Fto32(v, config)
case OpCvt64Fto32F:
return rewriteValueMIPS_OpCvt64Fto32F(v, config)
- case OpDeferCall:
- return rewriteValueMIPS_OpDeferCall(v, config)
case OpDiv16:
return rewriteValueMIPS_OpDiv16(v, config)
case OpDiv16u:
return rewriteValueMIPS_OpGeq8U(v, config)
case OpGetClosurePtr:
return rewriteValueMIPS_OpGetClosurePtr(v, config)
- case OpGoCall:
- return rewriteValueMIPS_OpGoCall(v, config)
case OpGreater16:
return rewriteValueMIPS_OpGreater16(v, config)
case OpGreater16U:
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 {
b := v.Block
_ = b
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 {
b := v.Block
_ = b
return rewriteValueMIPS64_OpCvt64to32F(v, config)
case OpCvt64to64F:
return rewriteValueMIPS64_OpCvt64to64F(v, config)
- case OpDeferCall:
- return rewriteValueMIPS64_OpDeferCall(v, config)
case OpDiv16:
return rewriteValueMIPS64_OpDiv16(v, config)
case OpDiv16u:
return rewriteValueMIPS64_OpGeq8U(v, config)
case OpGetClosurePtr:
return rewriteValueMIPS64_OpGetClosurePtr(v, config)
- case OpGoCall:
- return rewriteValueMIPS64_OpGoCall(v, config)
case OpGreater16:
return rewriteValueMIPS64_OpGreater16(v, config)
case OpGreater16U:
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 {
b := v.Block
_ = b
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 {
b := v.Block
_ = b
return rewriteValuePPC64_OpCvt64to32F(v, config)
case OpCvt64to64F:
return rewriteValuePPC64_OpCvt64to64F(v, config)
- case OpDeferCall:
- return rewriteValuePPC64_OpDeferCall(v, config)
case OpDiv16:
return rewriteValuePPC64_OpDiv16(v, config)
case OpDiv16u:
return rewriteValuePPC64_OpGeq8U(v, config)
case OpGetClosurePtr:
return rewriteValuePPC64_OpGetClosurePtr(v, config)
- case OpGoCall:
- return rewriteValuePPC64_OpGoCall(v, config)
case OpGreater16:
return rewriteValuePPC64_OpGreater16(v, config)
case OpGreater16U:
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 {
b := v.Block
_ = b
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 {
b := v.Block
_ = b
return rewriteValueS390X_OpCvt64to32F(v, config)
case OpCvt64to64F:
return rewriteValueS390X_OpCvt64to64F(v, config)
- case OpDeferCall:
- return rewriteValueS390X_OpDeferCall(v, config)
case OpDiv16:
return rewriteValueS390X_OpDiv16(v, config)
case OpDiv16u:
return rewriteValueS390X_OpGetClosurePtr(v, config)
case OpGetG:
return rewriteValueS390X_OpGetG(v, config)
- case OpGoCall:
- return rewriteValueS390X_OpGoCall(v, config)
case OpGreater16:
return rewriteValueS390X_OpGreater16(v, config)
case OpGreater16U:
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 {
b := v.Block
_ = b
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 {
b := v.Block
_ = b
popAndSave(s, v)
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.
return false // then issue the call as normal
}
if 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:
p := gc.Prog(obj.ACALL)
p.To.Type = obj.TYPE_REG