From: Srinivas Pokala Date: Tue, 11 Nov 2025 03:33:33 +0000 (+0100) Subject: cmd/compile/internal: add register ABI information for s390x X-Git-Tag: go1.26rc1~161 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=73b6aa0fecbf8b32e04a7226a964a454694939af;p=gostls13.git cmd/compile/internal: add register ABI information for s390x Update #40724 Change-Id: If8f2574259560b097db29347b2aecb098acef863 Reviewed-on: https://go-review.googlesource.com/c/go/+/719462 Reviewed-by: Keith Randall LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase Reviewed-by: Vishwanatha HD Reviewed-by: Keith Randall --- diff --git a/src/cmd/compile/internal/s390x/ssa.go b/src/cmd/compile/internal/s390x/ssa.go index de00f1ef8c..03af5bdd9e 100644 --- a/src/cmd/compile/internal/s390x/ssa.go +++ b/src/cmd/compile/internal/s390x/ssa.go @@ -540,6 +540,8 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) { 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) diff --git a/src/cmd/compile/internal/ssa/_gen/S390XOps.go b/src/cmd/compile/internal/ssa/_gen/S390XOps.go index c002d5bcc3..10d88a9c36 100644 --- a/src/cmd/compile/internal/ssa/_gen/S390XOps.go +++ b/src/cmd/compile/internal/ssa/_gen/S390XOps.go @@ -812,16 +812,18 @@ func init() { } 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", }, diff --git a/src/cmd/compile/internal/ssa/config.go b/src/cmd/compile/internal/ssa/config.go index 3540db498c..cb41bc5ed5 100644 --- a/src/cmd/compile/internal/ssa/config.go +++ b/src/cmd/compile/internal/ssa/config.go @@ -305,6 +305,8 @@ func NewConfig(arch string, types Types, ctxt *obj.Link, optimize, softfloat boo c.registers = registersS390X[:] c.gpRegMask = gpRegMaskS390X c.fpRegMask = fpRegMaskS390X + //c.intParamRegs = paramIntRegS390X + //c.floatParamRegs = paramFloatRegS390X c.FPReg = framepointerRegS390X c.LinkReg = linkRegS390X c.hasGReg = true diff --git a/src/cmd/compile/internal/ssa/opGen.go b/src/cmd/compile/internal/ssa/opGen.go index 26ab2cacce..8ebdb9d944 100644 --- a/src/cmd/compile/internal/ssa/opGen.go +++ b/src/cmd/compile/internal/ssa/opGen.go @@ -43559,8 +43559,8 @@ var registersS390X = [...]Register{ {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)