]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal: add register ABI information for s390x
authorSrinivas Pokala <Pokala.Srinivas@ibm.com>
Tue, 11 Nov 2025 03:33:33 +0000 (04:33 +0100)
committerKeith Randall <khr@golang.org>
Mon, 24 Nov 2025 18:21:19 +0000 (10:21 -0800)
Update #40724

Change-Id: If8f2574259560b097db29347b2aecb098acef863
Reviewed-on: https://go-review.googlesource.com/c/go/+/719462
Reviewed-by: Keith Randall <khr@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Vishwanatha HD <vishwanatha.hd@ibm.com>
Reviewed-by: Keith Randall <khr@google.com>
src/cmd/compile/internal/s390x/ssa.go
src/cmd/compile/internal/ssa/_gen/S390XOps.go
src/cmd/compile/internal/ssa/config.go
src/cmd/compile/internal/ssa/opGen.go

index de00f1ef8ce9eea72f9d9d2b62d8b65c5e086dd6..03af5bdd9e783e0809a0b3d6d6183bfdbdcf2526 100644 (file)
@@ -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)
index c002d5bcc382a3e665f10e04bde799748d2a8948..10d88a9c364c897b9456272e2f10cc0faa287223 100644 (file)
@@ -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",
                },
index 3540db498cf3901c27ff70d585161650469f665b..cb41bc5ed5a9d31468baa369fc59d84fb691328e 100644 (file)
@@ -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
index 26ab2cacce23da034016e4c542c9e9263ebada56..8ebdb9d944336bb2dd212342721c6821b1ec6a8d 100644 (file)
@@ -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)