diff options
author | Misha Brukman <brukman+llvm@gmail.com> | 2002-12-03 23:11:21 +0000 |
---|---|---|
committer | Misha Brukman <brukman+llvm@gmail.com> | 2002-12-03 23:11:21 +0000 |
commit | 03c6fafd05c067d934d15ce8f472cb09740d0133 (patch) | |
tree | 1d2deda776524f1de2b0293303a6ae79cdec2b47 | |
parent | 44662a783b8dbef0292c8337a52fce665b3b9f4c (diff) |
Added support for callee- and caller-save registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4897 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/X86RegisterInfo.cpp | 25 | ||||
-rw-r--r-- | lib/Target/X86/X86RegisterInfo.h | 5 |
2 files changed, 30 insertions, 0 deletions
diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp index 4ec2971070..8377527aa3 100644 --- a/lib/Target/X86/X86RegisterInfo.cpp +++ b/lib/Target/X86/X86RegisterInfo.cpp @@ -56,3 +56,28 @@ unsigned X86RegisterInfo::getFramePointer() const { unsigned X86RegisterInfo::getStackPointer() const { return X86::ESP; } + +const unsigned* X86RegisterInfo::getCalleeSaveRegs() const { + static const unsigned CalleeSaveRegs[] = { X86::ESI, X86::EDI, X86::EBX, X86::EBP, + MRegisterInfo::NoRegister }; + return CalleeSaveRegs; +} + + +const unsigned* X86RegisterInfo::getCallerSaveRegs() const { + static const unsigned CallerSaveRegs[] = { X86::EAX, X86::ECX, X86::EDX, + MRegisterInfo::NoRegister }; + return CallerSaveRegs; +} + +void +X86RegisterInfo::buildReg2RegClassMap +(std::map<unsigned, + const TargetRegisterClass*>& Reg2RegClassMap) const +{ + for (MRegisterInfo::const_iterator I = const_regclass_begin(), + E = const_regclass_end(); I != E; ++I) + { + I->buildReg2RegClassMap(Reg2RegClassMap); + } +} diff --git a/lib/Target/X86/X86RegisterInfo.h b/lib/Target/X86/X86RegisterInfo.h index 13140879f4..5487612c92 100644 --- a/lib/Target/X86/X86RegisterInfo.h +++ b/lib/Target/X86/X86RegisterInfo.h @@ -32,6 +32,9 @@ struct X86RegisterInfo : public MRegisterInfo { unsigned getFramePointer() const; unsigned getStackPointer() const; + const unsigned* getCalleeSaveRegs() const; + const unsigned* getCallerSaveRegs() const; + /// Returns register class appropriate for input SSA register /// const TargetRegisterClass *getClassForReg(unsigned Reg) const; @@ -40,6 +43,8 @@ struct X86RegisterInfo : public MRegisterInfo { unsigned getNumRegClasses() const; + void buildReg2RegClassMap(std::map<unsigned,const TargetRegisterClass*>& + Reg2RegClassMap) const; }; |