X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FMips%2FMipsTargetMachine.h;h=c4928c21ebe62b5dbb537436c51f8a9a8b028eb6;hb=0c66403efdf88ff4f247b6a9f45339bb3a893235;hp=ac55647aba4e8011b78ac0a18a27de3432178fbe;hpb=cb3718832375a581c5ea23f15918f3ea447a446c;p=oota-llvm.git diff --git a/lib/Target/Mips/MipsTargetMachine.h b/lib/Target/Mips/MipsTargetMachine.h index ac55647aba4..c4928c21ebe 100644 --- a/lib/Target/Mips/MipsTargetMachine.h +++ b/lib/Target/Mips/MipsTargetMachine.h @@ -1,4 +1,4 @@ -//===-- MipsTargetMachine.h - Define TargetMachine for Mips -00--*- C++ -*-===// +//===-- MipsTargetMachine.h - Define TargetMachine for Mips -----*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -14,62 +14,87 @@ #ifndef MIPSTARGETMACHINE_H #define MIPSTARGETMACHINE_H -#include "MipsSubtarget.h" -#include "MipsInstrInfo.h" +#include "MipsFrameLowering.h" #include "MipsISelLowering.h" +#include "MipsInstrInfo.h" +#include "MipsJITInfo.h" +#include "MipsSelectionDAGInfo.h" +#include "MipsSubtarget.h" +#include "llvm/ADT/OwningPtr.h" +#include "llvm/IR/DataLayout.h" +#include "llvm/Target/TargetFrameLowering.h" #include "llvm/Target/TargetMachine.h" -#include "llvm/Target/TargetData.h" -#include "llvm/Target/TargetFrameInfo.h" namespace llvm { - class raw_ostream; - - class MipsTargetMachine : public LLVMTargetMachine { - MipsSubtarget Subtarget; - const TargetData DataLayout; // Calculates type size & alignment - MipsInstrInfo InstrInfo; - TargetFrameInfo FrameInfo; - MipsTargetLowering TLInfo; - - protected: - virtual const TargetAsmInfo *createTargetAsmInfo() const; - - public: - MipsTargetMachine(const Module &M, const std::string &FS, bool isLittle); +class formatted_raw_ostream; +class MipsRegisterInfo; + +class MipsTargetMachine : public LLVMTargetMachine { + MipsSubtarget Subtarget; + const DataLayout DL; // Calculates type size & alignment + OwningPtr InstrInfo; + OwningPtr FrameLowering; + MipsTargetLowering TLInfo; + MipsSelectionDAGInfo TSInfo; + MipsJITInfo JITInfo; + +public: + MipsTargetMachine(const Target &T, StringRef TT, + StringRef CPU, StringRef FS, const TargetOptions &Options, + Reloc::Model RM, CodeModel::Model CM, + CodeGenOpt::Level OL, + bool isLittle); - virtual const MipsInstrInfo *getInstrInfo() const - { return &InstrInfo; } - virtual const TargetFrameInfo *getFrameInfo() const - { return &FrameInfo; } - virtual const MipsSubtarget *getSubtargetImpl() const - { return &Subtarget; } - virtual const TargetData *getTargetData() const - { return &DataLayout;} + virtual ~MipsTargetMachine() {} - virtual const MipsRegisterInfo *getRegisterInfo() const { - return &InstrInfo.getRegisterInfo(); - } + virtual const MipsInstrInfo *getInstrInfo() const + { return InstrInfo.get(); } + virtual const TargetFrameLowering *getFrameLowering() const + { return FrameLowering.get(); } + virtual const MipsSubtarget *getSubtargetImpl() const + { return &Subtarget; } + virtual const DataLayout *getDataLayout() const + { return &DL;} + virtual MipsJITInfo *getJITInfo() + { return &JITInfo; } - virtual MipsTargetLowering *getTargetLowering() const { - return const_cast(&TLInfo); - } + virtual const MipsRegisterInfo *getRegisterInfo() const { + return &InstrInfo->getRegisterInfo(); + } - static unsigned getModuleMatchQuality(const Module &M); + virtual const MipsTargetLowering *getTargetLowering() const { + return &TLInfo; + } - // Pass Pipeline Configuration - virtual bool addInstSelector(PassManagerBase &PM, bool Fast); - virtual bool addPreEmitPass(PassManagerBase &PM, bool Fast); - virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out); - }; + virtual const MipsSelectionDAGInfo* getSelectionDAGInfo() const { + return &TSInfo; + } -/// MipselTargetMachine - Mipsel target machine. + // Pass Pipeline Configuration + virtual TargetPassConfig *createPassConfig(PassManagerBase &PM); + virtual bool addCodeEmitter(PassManagerBase &PM, JITCodeEmitter &JCE); +}; + +/// MipsebTargetMachine - Mips32/64 big endian target machine. /// -class MipselTargetMachine : public MipsTargetMachine { +class MipsebTargetMachine : public MipsTargetMachine { + virtual void anchor(); public: - MipselTargetMachine(const Module &M, const std::string &FS); + MipsebTargetMachine(const Target &T, StringRef TT, + StringRef CPU, StringRef FS, const TargetOptions &Options, + Reloc::Model RM, CodeModel::Model CM, + CodeGenOpt::Level OL); +}; - static unsigned getModuleMatchQuality(const Module &M); +/// MipselTargetMachine - Mips32/64 little endian target machine. +/// +class MipselTargetMachine : public MipsTargetMachine { + virtual void anchor(); +public: + MipselTargetMachine(const Target &T, StringRef TT, + StringRef CPU, StringRef FS, const TargetOptions &Options, + Reloc::Model RM, CodeModel::Model CM, + CodeGenOpt::Level OL); }; } // End llvm namespace