mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-14 14:24:05 +00:00
Add VK_Mips_HIGHER and VK_Mips_HIGHEST to MCSymbolRefExpr::VariantKind.
Test case will be added later when long branch patch is checked in. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160597 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -114,7 +114,7 @@ void MipsFrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
unsigned StackAlign = getStackAlignment();
|
||||
uint64_t StackSize = RoundUpToAlignment(MFI->getStackSize(), StackAlign);
|
||||
|
||||
if (MipsFI->globalBaseRegSet())
|
||||
if (MipsFI->globalBaseRegSet())
|
||||
StackSize += MFI->getObjectOffset(MipsFI->getGlobalRegFI()) + StackAlign;
|
||||
else
|
||||
StackSize += RoundUpToAlignment(MipsFI->getMaxCallFrameSize(), StackAlign);
|
||||
@ -130,8 +130,13 @@ void MipsFrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
MachineLocation DstML, SrcML;
|
||||
|
||||
// Adjust stack.
|
||||
if (isInt<16>(-StackSize)) // addi sp, sp, (-stacksize)
|
||||
BuildMI(MBB, MBBI, dl, TII.get(ADDiu), SP).addReg(SP).addImm(-StackSize);
|
||||
if (isInt<16>(-StackSize)) {// addi sp, sp, (-stacksize)
|
||||
if (STI.inMips16Mode())
|
||||
BuildMI(MBB, MBBI, dl,
|
||||
TII.get(Mips::SaveRaF16)).addImm(StackSize); // cleanup
|
||||
else
|
||||
BuildMI(MBB, MBBI, dl, TII.get(ADDiu), SP).addReg(SP).addImm(-StackSize);
|
||||
}
|
||||
else { // Expand immediate that doesn't fit in 16-bit.
|
||||
unsigned ATReg = STI.isABI_N64() ? Mips::AT_64 : Mips::AT;
|
||||
|
||||
@ -237,8 +242,14 @@ void MipsFrameLowering::emitEpilogue(MachineFunction &MF,
|
||||
return;
|
||||
|
||||
// Adjust stack.
|
||||
if (isInt<16>(StackSize)) // addi sp, sp, (-stacksize)
|
||||
BuildMI(MBB, MBBI, dl, TII.get(ADDiu), SP).addReg(SP).addImm(StackSize);
|
||||
if (isInt<16>(StackSize)) { // addi sp, sp, (-stacksize)
|
||||
if (STI.inMips16Mode())
|
||||
// assumes stacksize multiple of 8
|
||||
BuildMI(MBB, MBBI, dl,
|
||||
TII.get(Mips::RestoreRaF16)).addImm(StackSize);
|
||||
else
|
||||
BuildMI(MBB, MBBI, dl, TII.get(ADDiu), SP).addReg(SP).addImm(StackSize);
|
||||
}
|
||||
else { // Expand immediate that doesn't fit in 16-bit.
|
||||
unsigned ATReg = STI.isABI_N64() ? Mips::AT_64 : Mips::AT;
|
||||
|
||||
|
Reference in New Issue
Block a user