mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
Implement ARMBaseRegisterInfo::getCallPreservedMask().
Move ARM callee-saved lists into ARMCallingConv.td. llvm-svn: 148357
This commit is contained in:
parent
0693cfb2ae
commit
057a8e7e4a
@ -63,26 +63,12 @@ ARMBaseRegisterInfo::ARMBaseRegisterInfo(const ARMBaseInstrInfo &tii,
|
||||
|
||||
const unsigned*
|
||||
ARMBaseRegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const {
|
||||
static const unsigned CalleeSavedRegs[] = {
|
||||
ARM::LR, ARM::R11, ARM::R10, ARM::R9, ARM::R8,
|
||||
ARM::R7, ARM::R6, ARM::R5, ARM::R4,
|
||||
return (STI.isTargetIOS()) ? CSR_iOS_SaveList : CSR_AAPCS_SaveList;
|
||||
}
|
||||
|
||||
ARM::D15, ARM::D14, ARM::D13, ARM::D12,
|
||||
ARM::D11, ARM::D10, ARM::D9, ARM::D8,
|
||||
0
|
||||
};
|
||||
|
||||
static const unsigned iOSCalleeSavedRegs[] = {
|
||||
// iOS ABI deviates from ARM standard ABI. R9 is not a callee-saved
|
||||
// register.
|
||||
ARM::LR, ARM::R7, ARM::R6, ARM::R5, ARM::R4,
|
||||
ARM::R11, ARM::R10, ARM::R8,
|
||||
|
||||
ARM::D15, ARM::D14, ARM::D13, ARM::D12,
|
||||
ARM::D11, ARM::D10, ARM::D9, ARM::D8,
|
||||
0
|
||||
};
|
||||
return (STI.isTargetIOS()) ? iOSCalleeSavedRegs : CalleeSavedRegs;
|
||||
const uint32_t*
|
||||
ARMBaseRegisterInfo::getCallPreservedMask(CallingConv::ID) const {
|
||||
return (STI.isTargetIOS()) ? CSR_iOS_RegMask : CSR_AAPCS_RegMask;
|
||||
}
|
||||
|
||||
BitVector ARMBaseRegisterInfo::
|
||||
|
@ -95,6 +95,7 @@ protected:
|
||||
public:
|
||||
/// Code Generation virtual methods...
|
||||
const unsigned *getCalleeSavedRegs(const MachineFunction *MF = 0) const;
|
||||
const uint32_t *getCallPreservedMask(CallingConv::ID) const;
|
||||
|
||||
BitVector getReservedRegs(const MachineFunction &MF) const;
|
||||
|
||||
|
@ -164,3 +164,14 @@ def RetCC_ARM_AAPCS_VFP : CallingConv<[
|
||||
S9, S10, S11, S12, S13, S14, S15]>>,
|
||||
CCDelegateTo<RetCC_ARM_AAPCS_Common>
|
||||
]>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Callee-saved register lists.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
def CSR_AAPCS : CalleeSavedRegs<(add LR, R11, R10, R9, R8, R7, R6, R5, R4,
|
||||
(sequence "D%u", 15, 8))>;
|
||||
|
||||
// iOS ABI deviates from ARM standard ABI. R9 is not a callee-saved register.
|
||||
// Also save R7-R4 first to match the stack frame fixed spill areas.
|
||||
def CSR_iOS : CalleeSavedRegs<(add LR, R7, R6, R5, R4, (sub CSR_AAPCS, R9))>;
|
||||
|
Loading…
x
Reference in New Issue
Block a user