MipsTargetMachine.h revision 218893
1249259Sdim//===-- MipsTargetMachine.h - Define TargetMachine for Mips -00--*- C++ -*-===// 2249259Sdim// 3249259Sdim// The LLVM Compiler Infrastructure 4249259Sdim// 5249259Sdim// This file is distributed under the University of Illinois Open Source 6249259Sdim// License. See LICENSE.TXT for details. 7249259Sdim// 8249259Sdim//===----------------------------------------------------------------------===// 9249259Sdim// 10249259Sdim// This file declares the Mips specific subclass of TargetMachine. 11249259Sdim// 12249259Sdim//===----------------------------------------------------------------------===// 13249259Sdim 14249259Sdim#ifndef MIPSTARGETMACHINE_H 15249259Sdim#define MIPSTARGETMACHINE_H 16249259Sdim 17249259Sdim#include "MipsSubtarget.h" 18249259Sdim#include "MipsInstrInfo.h" 19249259Sdim#include "MipsISelLowering.h" 20249259Sdim#include "MipsFrameLowering.h" 21249259Sdim#include "MipsSelectionDAGInfo.h" 22249259Sdim#include "llvm/Target/TargetMachine.h" 23249259Sdim#include "llvm/Target/TargetData.h" 24249259Sdim#include "llvm/Target/TargetFrameLowering.h" 25249259Sdim 26249259Sdimnamespace llvm { 27249259Sdim class formatted_raw_ostream; 28249259Sdim 29249259Sdim class MipsTargetMachine : public LLVMTargetMachine { 30249259Sdim MipsSubtarget Subtarget; 31249259Sdim const TargetData DataLayout; // Calculates type size & alignment 32249259Sdim MipsInstrInfo InstrInfo; 33249259Sdim MipsFrameLowering FrameLowering; 34249259Sdim MipsTargetLowering TLInfo; 35249259Sdim MipsSelectionDAGInfo TSInfo; 36249259Sdim public: 37249259Sdim MipsTargetMachine(const Target &T, const std::string &TT, 38249259Sdim const std::string &FS, bool isLittle); 39249259Sdim 40249259Sdim virtual const MipsInstrInfo *getInstrInfo() const 41249259Sdim { return &InstrInfo; } 42249259Sdim virtual const TargetFrameLowering *getFrameLowering() const 43249259Sdim { return &FrameLowering; } 44249259Sdim virtual const MipsSubtarget *getSubtargetImpl() const 45249259Sdim { return &Subtarget; } 46249259Sdim virtual const TargetData *getTargetData() const 47249259Sdim { return &DataLayout;} 48249259Sdim 49249259Sdim virtual const MipsRegisterInfo *getRegisterInfo() const { 50249259Sdim return &InstrInfo.getRegisterInfo(); 51249259Sdim } 52249259Sdim 53249259Sdim virtual const MipsTargetLowering *getTargetLowering() const { 54249259Sdim return &TLInfo; 55249259Sdim } 56249259Sdim 57249259Sdim virtual const MipsSelectionDAGInfo* getSelectionDAGInfo() const { 58249259Sdim return &TSInfo; 59249259Sdim } 60249259Sdim 61249259Sdim // Pass Pipeline Configuration 62249259Sdim virtual bool addInstSelector(PassManagerBase &PM, 63249259Sdim CodeGenOpt::Level OptLevel); 64249259Sdim virtual bool addPreEmitPass(PassManagerBase &PM, 65249259Sdim CodeGenOpt::Level OptLevel); 66249259Sdim }; 67249259Sdim 68249259Sdim/// MipselTargetMachine - Mipsel target machine. 69249259Sdim/// 70249259Sdimclass MipselTargetMachine : public MipsTargetMachine { 71249259Sdimpublic: 72249259Sdim MipselTargetMachine(const Target &T, const std::string &TT, 73249259Sdim const std::string &FS); 74249259Sdim}; 75249259Sdim 76249259Sdim} // End llvm namespace 77249259Sdim 78249259Sdim#endif 79249259Sdim