X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FMips%2FMipsTargetMachine.h;h=a5aa39bc9f4d37d22631c549c0ccce776bc2b13b;hb=7ef85447c950ef801414251a2ce49d2564cbf5da;hp=60822d0c055f22f34213e23e1725a45700059d7b;hpb=6f9e66e1be19db4e88b0fda1ece0d2cd46de4064;p=oota-llvm.git diff --git a/lib/Target/Mips/MipsTargetMachine.h b/lib/Target/Mips/MipsTargetMachine.h index 60822d0c055..a5aa39bc9f4 100644 --- a/lib/Target/Mips/MipsTargetMachine.h +++ b/lib/Target/Mips/MipsTargetMachine.h @@ -15,16 +15,16 @@ #define MIPSTARGETMACHINE_H #include "MipsFrameLowering.h" -#include "MipsInstrInfo.h" #include "MipsISelLowering.h" +#include "MipsInstrInfo.h" #include "MipsJITInfo.h" #include "MipsSelectionDAGInfo.h" #include "MipsSubtarget.h" -#include "MipsELFWriterInfo.h" -#include "llvm/Target/TargetMachine.h" -#include "llvm/DataLayout.h" +#include "llvm/CodeGen/Passes.h" +#include "llvm/CodeGen/SelectionDAGISel.h" +#include "llvm/IR/DataLayout.h" #include "llvm/Target/TargetFrameLowering.h" -#include "llvm/Target/TargetTransformImpl.h" +#include "llvm/Target/TargetMachine.h" namespace llvm { class formatted_raw_ostream; @@ -33,14 +33,18 @@ class MipsRegisterInfo; class MipsTargetMachine : public LLVMTargetMachine { MipsSubtarget Subtarget; const DataLayout DL; // Calculates type size & alignment - const MipsInstrInfo *InstrInfo; - const MipsFrameLowering *FrameLowering; - MipsTargetLowering TLInfo; + std::unique_ptr InstrInfo; + std::unique_ptr FrameLowering; + std::unique_ptr TLInfo; + std::unique_ptr InstrInfo16; + std::unique_ptr FrameLowering16; + std::unique_ptr TLInfo16; + std::unique_ptr InstrInfoSE; + std::unique_ptr FrameLoweringSE; + std::unique_ptr TLInfoSE; MipsSelectionDAGInfo TSInfo; + const InstrItineraryData &InstrItins; MipsJITInfo JITInfo; - MipsELFWriterInfo ELFWriterInfo; - ScalarTargetTransformImpl STTI; - VectorTargetTransformInfo VTTI; public: MipsTargetMachine(const Target &T, StringRef TT, @@ -49,44 +53,47 @@ public: CodeGenOpt::Level OL, bool isLittle); - virtual ~MipsTargetMachine() { delete InstrInfo; } + virtual ~MipsTargetMachine() {} - virtual const MipsInstrInfo *getInstrInfo() const - { return InstrInfo; } - virtual const TargetFrameLowering *getFrameLowering() const - { return FrameLowering; } - virtual const MipsSubtarget *getSubtargetImpl() const + void addAnalysisPasses(PassManagerBase &PM) override; + + const MipsInstrInfo *getInstrInfo() const override + { return InstrInfo.get(); } + const TargetFrameLowering *getFrameLowering() const override + { return FrameLowering.get(); } + const MipsSubtarget *getSubtargetImpl() const override { return &Subtarget; } - virtual const DataLayout *getDataLayout() const + const DataLayout *getDataLayout() const override { return &DL;} - virtual MipsJITInfo *getJITInfo() - { return &JITInfo; } - virtual const MipsRegisterInfo *getRegisterInfo() const { - return &InstrInfo->getRegisterInfo(); + const InstrItineraryData *getInstrItineraryData() const override { + return Subtarget.inMips16Mode() ? nullptr : &InstrItins; } - virtual const MipsTargetLowering *getTargetLowering() const { - return &TLInfo; - } + MipsJITInfo *getJITInfo() override { return &JITInfo; } - virtual const MipsSelectionDAGInfo* getSelectionDAGInfo() const { - return &TSInfo; + const MipsRegisterInfo *getRegisterInfo() const override { + return &InstrInfo->getRegisterInfo(); } - virtual const MipsELFWriterInfo *getELFWriterInfo() const { - return &ELFWriterInfo; - } - virtual const ScalarTargetTransformInfo *getScalarTargetTransformInfo()const { - return &STTI; + const MipsTargetLowering *getTargetLowering() const override { + return TLInfo.get(); } - virtual const VectorTargetTransformInfo *getVectorTargetTransformInfo()const { - return &VTTI; + + const MipsSelectionDAGInfo* getSelectionDAGInfo() const override { + return &TSInfo; } // Pass Pipeline Configuration - virtual TargetPassConfig *createPassConfig(PassManagerBase &PM); - virtual bool addCodeEmitter(PassManagerBase &PM, JITCodeEmitter &JCE); + TargetPassConfig *createPassConfig(PassManagerBase &PM) override; + bool addCodeEmitter(PassManagerBase &PM, JITCodeEmitter &JCE) override; + + // Set helper classes + void setHelperClassesMips16(); + + void setHelperClassesMipsSE(); + + }; /// MipsebTargetMachine - Mips32/64 big endian target machine.