]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal: add ABI register information for ppc64
authorLynn Boger <laboger@linux.vnet.ibm.com>
Mon, 20 Sep 2021 18:53:19 +0000 (13:53 -0500)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Tue, 21 Sep 2021 12:47:07 +0000 (12:47 +0000)
This adds the defines for ABI registers on PPC64. Other changes
will need to be in place before they are enabled.

Updates #40724

Change-Id: Ia6ead140719eda9aa99b99c48afafff684c33039
Reviewed-on: https://go-review.googlesource.com/c/go/+/351110
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Trust: Lynn Boger <laboger@linux.vnet.ibm.com>

src/cmd/compile/internal/ppc64/ssa.go
src/cmd/compile/internal/ssa/config.go
src/cmd/compile/internal/ssa/gen/PPC64Ops.go
src/cmd/compile/internal/ssa/opGen.go

index e366e06949dca29a40d9c26fc912155fa6f2dc61..d4b85bffe3d5af1020afa7033c47f1c456dd0e9a 100644 (file)
@@ -502,6 +502,9 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) {
                p.From.Reg = v.Args[0].Reg()
                ssagen.AddrAuto(&p.To, v)
 
+       case ssa.OpArgIntReg, ssa.OpArgFloatReg:
+               ssagen.CheckArgReg(v)
+
        case ssa.OpPPC64DIVD:
                // For now,
                //
index 32e3a0860e3dadc9417063665566082e824a021c..61d1dea6426e09ce6cd8d4c2702689a6cc17744b 100644 (file)
@@ -239,6 +239,8 @@ func NewConfig(arch string, types Types, ctxt *obj.Link, optimize, softfloat boo
                c.registers = registersPPC64[:]
                c.gpRegMask = gpRegMaskPPC64
                c.fpRegMask = fpRegMaskPPC64
+               //c.intParamRegs = paramIntRegPPC64
+               //c.floatParamRegs = paramFloatRegPPC64
                c.FPReg = framepointerRegPPC64
                c.LinkReg = linkRegPPC64
                c.noDuffDevice = true // TODO: Resolve PPC64 DuffDevice (has zero, but not copy)
index a14d9cd4904ac02729112efb3ef064727d53fe65..9d9122e148814bfe89320a3fff8adb891ff99f7f 100644 (file)
@@ -705,15 +705,17 @@ func init() {
        }
 
        archs = append(archs, arch{
-               name:            "PPC64",
-               pkg:             "cmd/internal/obj/ppc64",
-               genfile:         "../../ppc64/ssa.go",
-               ops:             ops,
-               blocks:          blocks,
-               regnames:        regNamesPPC64,
-               gpregmask:       gp,
-               fpregmask:       fp,
-               framepointerreg: int8(num["SP"]),
-               linkreg:         -1, // not used
+               name:               "PPC64",
+               pkg:                "cmd/internal/obj/ppc64",
+               genfile:            "../../ppc64/ssa.go",
+               ops:                ops,
+               blocks:             blocks,
+               regnames:           regNamesPPC64,
+               ParamIntRegNames:   "R3 R4 R5 R6 R7 R8 R9 R10 R14 R15 R16 R17",
+               ParamFloatRegNames: "F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12",
+               gpregmask:          gp,
+               fpregmask:          fp,
+               framepointerreg:    -1,
+               linkreg:            -1, // not used
        })
 }
index eb7e4b91bb7eede16a8439c65bd8e00c51c2e995..ceb0a24285e85a8fdcf82c8b0cd243b9a2c43c05 100644 (file)
@@ -37030,12 +37030,12 @@ var registersPPC64 = [...]Register{
        {62, ppc64.REG_F30, -1, "F30"},
        {63, ppc64.REG_F31, -1, "F31"},
 }
-var paramIntRegPPC64 = []int8(nil)
-var paramFloatRegPPC64 = []int8(nil)
+var paramIntRegPPC64 = []int8{3, 4, 5, 6, 7, 8, 9, 10, 14, 15, 16, 17}
+var paramFloatRegPPC64 = []int8{33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44}
 var gpRegMaskPPC64 = regMask(1073733624)
 var fpRegMaskPPC64 = regMask(576460743713488896)
 var specialRegMaskPPC64 = regMask(0)
-var framepointerRegPPC64 = int8(1)
+var framepointerRegPPC64 = int8(-1)
 var linkRegPPC64 = int8(-1)
 var registersRISCV64 = [...]Register{
        {0, riscv.REG_X0, -1, "X0"},