]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal: add register info for loong64 regABI
authorGuoqi Chen <chenguoqi@loongson.cn>
Tue, 15 Aug 2023 11:54:51 +0000 (19:54 +0800)
committerGopher Robot <gobot@golang.org>
Tue, 21 Nov 2023 19:04:14 +0000 (19:04 +0000)
Update #40724

Co-authored-by: Xiaolin Zhao <zhaoxiaolin@loongson.cn>
Change-Id: Ifd7d94147b01e4fc83978b53dca2bcc0ad1ac4e3
Reviewed-on: https://go-review.googlesource.com/c/go/+/521779
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: David Chase <drchase@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: David Chase <drchase@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Meidan Li <limeidan@loongson.cn>
src/cmd/compile/internal/loong64/ssa.go
src/cmd/compile/internal/ssa/_gen/LOONG64Ops.go
src/cmd/compile/internal/ssa/config.go
src/cmd/compile/internal/ssa/opGen.go

index ad465ba3bb54edb58fbe4219f352b6cd4b422f70..06490a7ba5c408ab52d58109736cebebc04110af 100644 (file)
@@ -144,6 +144,8 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) {
                p.From.Type = obj.TYPE_REG
                p.From.Reg = r
                ssagen.AddrAuto(&p.To, v)
+       case ssa.OpArgIntReg, ssa.OpArgFloatReg:
+               ssagen.CheckArgReg(v)
        case ssa.OpLOONG64ADDV,
                ssa.OpLOONG64SUBV,
                ssa.OpLOONG64AND,
index 10ffcb8b977b9a0e024a332cf5ad6123e6048f22..845d5491e2376ed8ff06be7c4802a10503b158d0 100644 (file)
@@ -476,8 +476,8 @@ func init() {
                blocks:   blocks,
                regnames: regNamesLOONG64,
                // TODO: support register ABI on loong64
-               ParamIntRegNames:   "R4 R5 R6 R7 R8 R9 R10 R11",
-               ParamFloatRegNames: "F0 F1 F2 F3 F4 F5 F6 F7",
+               ParamIntRegNames:   "R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19",
+               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
index da4294d8716c630b78cfdb10084ab24434b084c8..c36ac4cd5d0009c8a81768f78b556194858f3450 100644 (file)
@@ -283,6 +283,8 @@ func NewConfig(arch string, types Types, ctxt *obj.Link, optimize, softfloat boo
                c.registers = registersLOONG64[:]
                c.gpRegMask = gpRegMaskLOONG64
                c.fpRegMask = fpRegMaskLOONG64
+               // c.intParamRegs = paramIntRegLOONG64
+               // c.floatParamRegs = paramFloatRegLOONG64
                c.FPReg = framepointerRegLOONG64
                c.LinkReg = linkRegLOONG64
                c.hasGReg = true
index e39190aaf7c70fa78d20c8aef2c8add0c4302dd8..7ad7209366ad46c63b00d25ff6044ae2278d19a2 100644 (file)
@@ -40751,8 +40751,8 @@ var registersLOONG64 = [...]Register{
        {61, loong64.REG_F31, -1, "F31"},
        {62, 0, -1, "SB"},
 }
-var paramIntRegLOONG64 = []int8{3, 4, 5, 6, 7, 8, 9, 10}
-var paramFloatRegLOONG64 = []int8{30, 31, 32, 33, 34, 35, 36, 37}
+var paramIntRegLOONG64 = []int8{3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}
+var paramFloatRegLOONG64 = []int8{30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45}
 var gpRegMaskLOONG64 = regMask(1071644664)
 var fpRegMaskLOONG64 = regMask(4611686017353646080)
 var specialRegMaskLOONG64 = regMask(0)