p.From.Type = obj.TYPE_REG
p.From.Reg = v.Args[0].Reg()
ssagen.AddrAuto(&p.To, v)
+ case ssa.OpArgIntReg, ssa.OpArgFloatReg:
+ ssagen.CheckArgReg(v)
case ssa.OpS390XLoweredGetClosurePtr:
// Closure pointer is R12 (already)
ssagen.CheckLoweredGetClosurePtr(v)
}
archs = append(archs, arch{
- name: "S390X",
- pkg: "cmd/internal/obj/s390x",
- genfile: "../../s390x/ssa.go",
- ops: S390Xops,
- blocks: S390Xblocks,
- regnames: regNamesS390X,
- gpregmask: gp,
- fpregmask: fp,
- framepointerreg: -1, // not used
- linkreg: int8(num["R14"]),
+ name: "S390X",
+ pkg: "cmd/internal/obj/s390x",
+ genfile: "../../s390x/ssa.go",
+ ops: S390Xops,
+ blocks: S390Xblocks,
+ regnames: regNamesS390X,
+ ParamIntRegNames: "R2 R3 R4 R5 R6 R7 R8 R9",
+ ParamFloatRegNames: "F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15",
+ gpregmask: gp,
+ fpregmask: fp,
+ framepointerreg: -1, // not used
+ linkreg: int8(num["R14"]),
imports: []string{
"cmd/internal/obj/s390x",
},
c.registers = registersS390X[:]
c.gpRegMask = gpRegMaskS390X
c.fpRegMask = fpRegMaskS390X
+ //c.intParamRegs = paramIntRegS390X
+ //c.floatParamRegs = paramFloatRegS390X
c.FPReg = framepointerRegS390X
c.LinkReg = linkRegS390X
c.hasGReg = true
{31, s390x.REG_F15, "F15"},
{32, 0, "SB"},
}
-var paramIntRegS390X = []int8(nil)
-var paramFloatRegS390X = []int8(nil)
+var paramIntRegS390X = []int8{2, 3, 4, 5, 6, 7, 8, 9}
+var paramFloatRegS390X = []int8{16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}
var gpRegMaskS390X = regMask(23551)
var fpRegMaskS390X = regMask(4294901760)
var specialRegMaskS390X = regMask(0)