diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-01-19 07:51:42 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-01-19 07:51:42 +0000 |
commit | 10043e215bcfd6d2b09a6ce3ad461fd686f686b8 (patch) | |
tree | f9b3ebcddb8683310866f912f1e3e61ba565235f /llvm/lib/Target/ARM/ARMRegisterInfo.h | |
parent | 28c5b8618a58a8fdc7a7f2505a7aa367b35fc129 (diff) | |
download | bcm5719-llvm-10043e215bcfd6d2b09a6ce3ad461fd686f686b8.tar.gz bcm5719-llvm-10043e215bcfd6d2b09a6ce3ad461fd686f686b8.zip |
ARM backend contribution from Apple.
llvm-svn: 33353
Diffstat (limited to 'llvm/lib/Target/ARM/ARMRegisterInfo.h')
-rw-r--r-- | llvm/lib/Target/ARM/ARMRegisterInfo.h | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/llvm/lib/Target/ARM/ARMRegisterInfo.h b/llvm/lib/Target/ARM/ARMRegisterInfo.h index 16c277ed928..6b9ac39a412 100644 --- a/llvm/lib/Target/ARM/ARMRegisterInfo.h +++ b/llvm/lib/Target/ARM/ARMRegisterInfo.h @@ -17,18 +17,36 @@ #include "llvm/Target/MRegisterInfo.h" #include "ARMGenRegisterInfo.h.inc" +#include <set> namespace llvm { - -class Type; -class TargetInstrInfo; + class TargetInstrInfo; + class ARMSubtarget; + class Type; struct ARMRegisterInfo : public ARMGenRegisterInfo { const TargetInstrInfo &TII; + const ARMSubtarget &STI; +private: + /// FramePtr - ARM physical register used as frame ptr. + unsigned FramePtr; + +public: + ARMRegisterInfo(const TargetInstrInfo &tii, const ARMSubtarget &STI); - ARMRegisterInfo(const TargetInstrInfo &tii); + /// getRegisterNumbering - Given the enum value for some register, e.g. + /// ARM::LR, return the number that it corresponds to (e.g. 14). + static unsigned getRegisterNumbering(unsigned RegEnum); /// Code Generation virtual methods... + bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, + MachineBasicBlock::iterator MI, + const std::vector<CalleeSavedInfo> &CSI) const; + + bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, + MachineBasicBlock::iterator MI, + const std::vector<CalleeSavedInfo> &CSI) const; + void storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned SrcReg, int FrameIndex, @@ -43,9 +61,8 @@ struct ARMRegisterInfo : public ARMGenRegisterInfo { unsigned DestReg, unsigned SrcReg, const TargetRegisterClass *RC) const; - virtual MachineInstr* foldMemoryOperand(MachineInstr* MI, - unsigned OpNum, - int FrameIndex) const; + MachineInstr* foldMemoryOperand(MachineInstr* MI, unsigned OpNum, + int FrameIndex) const; const unsigned *getCalleeSavedRegs() const; @@ -57,7 +74,7 @@ struct ARMRegisterInfo : public ARMGenRegisterInfo { void eliminateFrameIndex(MachineBasicBlock::iterator II) const; - void processFunctionBeforeFrameFinalized(MachineFunction &MF) const; + void processFunctionBeforeCalleeSavedScan(MachineFunction &MF) const; void emitPrologue(MachineFunction &MF) const; void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; |