1//===-- XCoreTargetMachine.h - Define TargetMachine for XCore ---*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file declares the XCore specific subclass of TargetMachine. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef XCORETARGETMACHINE_H 15#define XCORETARGETMACHINE_H 16 17#include "XCoreSubtarget.h" 18#include "llvm/Target/TargetMachine.h" 19 20namespace llvm { 21 22class XCoreTargetMachine : public LLVMTargetMachine { 23 XCoreSubtarget Subtarget; 24public: 25 XCoreTargetMachine(const Target &T, StringRef TT, 26 StringRef CPU, StringRef FS, const TargetOptions &Options, 27 Reloc::Model RM, CodeModel::Model CM, 28 CodeGenOpt::Level OL); 29 30 const XCoreInstrInfo *getInstrInfo() const override { 31 return getSubtargetImpl()->getInstrInfo(); 32 } 33 const XCoreFrameLowering *getFrameLowering() const override { 34 return getSubtargetImpl()->getFrameLowering(); 35 } 36 const XCoreSubtarget *getSubtargetImpl() const override { return &Subtarget; } 37 const XCoreTargetLowering *getTargetLowering() const override { 38 return getSubtargetImpl()->getTargetLowering(); 39 } 40 const XCoreSelectionDAGInfo* getSelectionDAGInfo() const override { 41 return getSubtargetImpl()->getSelectionDAGInfo(); 42 } 43 const TargetRegisterInfo *getRegisterInfo() const override { 44 return getSubtargetImpl()->getRegisterInfo(); 45 } 46 const DataLayout *getDataLayout() const override { 47 return getSubtargetImpl()->getDataLayout(); 48 } 49 50 // Pass Pipeline Configuration 51 TargetPassConfig *createPassConfig(PassManagerBase &PM) override; 52 53 void addAnalysisPasses(PassManagerBase &PM) override; 54}; 55 56} // end namespace llvm 57 58#endif 59