diff options
author | Sanjiv Gupta <sanjiv.gupta@microchip.com> | 2008-11-19 11:00:54 +0000 |
---|---|---|
committer | Sanjiv Gupta <sanjiv.gupta@microchip.com> | 2008-11-19 11:00:54 +0000 |
commit | 2ae21ee51798759d1fa455969f53c5a428e3f091 (patch) | |
tree | 5e5c4f32b0f5aa44036fd0c55e7da5c57184381b /llvm/lib/Target/PIC16/PIC16TargetMachine.h | |
parent | af7efa695c5c775dbe33a69c3b69c994a4fbaf2c (diff) | |
download | bcm5719-llvm-2ae21ee51798759d1fa455969f53c5a428e3f091.tar.gz bcm5719-llvm-2ae21ee51798759d1fa455969f53c5a428e3f091.zip |
Added a more function PIC16 backend. However to get this working a patch in
ExpandIntegerOperand (LegalizeIntegerTypes.cpp) is needed which is yet to be reworked and submitted.
llvm-svn: 59617
Diffstat (limited to 'llvm/lib/Target/PIC16/PIC16TargetMachine.h')
-rw-r--r-- | llvm/lib/Target/PIC16/PIC16TargetMachine.h | 48 |
1 files changed, 30 insertions, 18 deletions
diff --git a/llvm/lib/Target/PIC16/PIC16TargetMachine.h b/llvm/lib/Target/PIC16/PIC16TargetMachine.h index bf0642f4f3a..85e14c1915d 100644 --- a/llvm/lib/Target/PIC16/PIC16TargetMachine.h +++ b/llvm/lib/Target/PIC16/PIC16TargetMachine.h @@ -17,6 +17,7 @@ #include "PIC16InstrInfo.h" #include "PIC16ISelLowering.h" +#include "PIC16RegisterInfo.h" #include "PIC16Subtarget.h" #include "llvm/Target/TargetData.h" #include "llvm/Target/TargetFrameInfo.h" @@ -31,31 +32,42 @@ class PIC16TargetMachine : public LLVMTargetMachine { const TargetData DataLayout; // Calculates type size & alignment PIC16InstrInfo InstrInfo; PIC16TargetLowering TLInfo; + + // PIC16 does not have any call stack frame, therefore not having + // any PIC16 specific FrameInfo class. TargetFrameInfo FrameInfo; protected: virtual const TargetAsmInfo *createTargetAsmInfo() const; - + public: - PIC16TargetMachine(const Module &M, const std::string &FS); - - virtual const TargetFrameInfo *getFrameInfo() const - { return &FrameInfo; } - virtual const PIC16InstrInfo *getInstrInfo() const - { return &InstrInfo; } - virtual const TargetData *getTargetData() const - { return &DataLayout; } - virtual PIC16TargetLowering *getTargetLowering() const - { return const_cast<PIC16TargetLowering*>(&TLInfo); } - virtual const PIC16RegisterInfo *getRegisterInfo() const - { return &InstrInfo.getRegisterInfo(); } - + PIC16TargetMachine(const Module &M, const std::string &FS, + bool Cooper = false); + + virtual const TargetFrameInfo *getFrameInfo() const { return &FrameInfo; } + virtual const PIC16InstrInfo *getInstrInfo() const { return &InstrInfo; } + virtual const TargetData *getTargetData() const { return &DataLayout;} + virtual const PIC16Subtarget *getSubtargetImpl() const { return &Subtarget; } + + virtual const PIC16RegisterInfo *getRegisterInfo() const { + return &(InstrInfo.getRegisterInfo()); + } + + virtual PIC16TargetLowering *getTargetLowering() const { + return const_cast<PIC16TargetLowering*>(&TLInfo); + } + virtual bool addInstSelector(PassManagerBase &PM, bool Fast); - virtual bool addPrologEpilogInserter(PassManagerBase &PM, bool Fast); - virtual bool addPreEmitPass(PassManagerBase &PM, bool Fast); - virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast, + virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast, raw_ostream &Out); -}; +}; // PIC16TargetMachine. + +/// CooperTargetMachine +class CooperTargetMachine : public PIC16TargetMachine { +public: + CooperTargetMachine(const Module &M, const std::string &FS); +}; // CooperTargetMachine. + } // end namespace llvm #endif |