Commit 5c59cb4a authored by Cherry Zhang's avatar Cherry Zhang

cmd/compile: make LR allocatable in non-leaf functions on ARM64

The mechanism is initially introduced (and reviewed) in CL 30597
on S390X.

Change-Id: I12fbe6e9269b2936690e0ec896cb6b5aa40ad7da
Reviewed-on: https://go-review.googlesource.com/32180Reviewed-by: 's avatarDavid Chase <drchase@google.com>
parent c69dd3f0
...@@ -60,8 +60,8 @@ var regNamesARM64 = []string{ ...@@ -60,8 +60,8 @@ var regNamesARM64 = []string{
// R27 = REGTMP not used in regalloc // R27 = REGTMP not used in regalloc
"g", // aka R28 "g", // aka R28
"R29", // frame pointer, not used "R29", // frame pointer, not used
// R30 = REGLINK not used in regalloc "R30", // aka REGLINK
"SP", // aka R31 "SP", // aka R31
"F0", "F0",
"F1", "F1",
...@@ -123,7 +123,7 @@ func init() { ...@@ -123,7 +123,7 @@ func init() {
// Common individual register masks // Common individual register masks
var ( var (
gp = buildReg("R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26") gp = buildReg("R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30")
gpg = gp | buildReg("g") gpg = gp | buildReg("g")
gpsp = gp | buildReg("SP") gpsp = gp | buildReg("SP")
gpspg = gpg | buildReg("SP") gpspg = gpg | buildReg("SP")
...@@ -350,7 +350,7 @@ func init() { ...@@ -350,7 +350,7 @@ func init() {
argLength: 2, argLength: 2,
reg: regInfo{ reg: regInfo{
inputs: []regMask{gp}, inputs: []regMask{gp},
clobbers: buildReg("R16"), clobbers: buildReg("R16 R30"),
}, },
faultOnNilArg0: true, faultOnNilArg0: true,
}, },
...@@ -389,7 +389,7 @@ func init() { ...@@ -389,7 +389,7 @@ func init() {
argLength: 3, argLength: 3,
reg: regInfo{ reg: regInfo{
inputs: []regMask{buildReg("R17"), buildReg("R16")}, inputs: []regMask{buildReg("R17"), buildReg("R16")},
clobbers: buildReg("R16 R17"), clobbers: buildReg("R16 R17 R30"),
}, },
faultOnNilArg0: true, faultOnNilArg0: true,
faultOnNilArg1: true, faultOnNilArg1: true,
...@@ -530,6 +530,6 @@ func init() { ...@@ -530,6 +530,6 @@ func init() {
gpregmask: gp, gpregmask: gp,
fpregmask: fp, fpregmask: fp,
framepointerreg: -1, // not used framepointerreg: -1, // not used
linkreg: -1, // not used linkreg: int8(num["R30"]),
}) })
} }
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment