1234353Sdim//===-- MSP430TargetMachine.h - Define TargetMachine for MSP430 -*- C++ -*-===// 2193323Sed// 3193323Sed// The LLVM Compiler Infrastructure 4193323Sed// 5193323Sed// This file is distributed under the University of Illinois Open Source 6193323Sed// License. See LICENSE.TXT for details. 7193323Sed// 8193323Sed//===----------------------------------------------------------------------===// 9193323Sed// 10193323Sed// This file declares the MSP430 specific subclass of TargetMachine. 11193323Sed// 12193323Sed//===----------------------------------------------------------------------===// 13193323Sed 14193323Sed 15193323Sed#ifndef LLVM_TARGET_MSP430_TARGETMACHINE_H 16193323Sed#define LLVM_TARGET_MSP430_TARGETMACHINE_H 17193323Sed 18249423Sdim#include "MSP430FrameLowering.h" 19249423Sdim#include "MSP430ISelLowering.h" 20193323Sed#include "MSP430InstrInfo.h" 21249423Sdim#include "MSP430RegisterInfo.h" 22208599Srdivacky#include "MSP430SelectionDAGInfo.h" 23193323Sed#include "MSP430Subtarget.h" 24249423Sdim#include "llvm/IR/DataLayout.h" 25218893Sdim#include "llvm/Target/TargetFrameLowering.h" 26193323Sed#include "llvm/Target/TargetMachine.h" 27193323Sed 28193323Sednamespace llvm { 29193323Sed 30193323Sed/// MSP430TargetMachine 31193323Sed/// 32193323Sedclass MSP430TargetMachine : public LLVMTargetMachine { 33193323Sed MSP430Subtarget Subtarget; 34243830Sdim const DataLayout DL; // Calculates type size & alignment 35193323Sed MSP430InstrInfo InstrInfo; 36193323Sed MSP430TargetLowering TLInfo; 37208599Srdivacky MSP430SelectionDAGInfo TSInfo; 38218893Sdim MSP430FrameLowering FrameLowering; 39193323Sed 40193323Sedpublic: 41226633Sdim MSP430TargetMachine(const Target &T, StringRef TT, 42234353Sdim StringRef CPU, StringRef FS, const TargetOptions &Options, 43234353Sdim Reloc::Model RM, CodeModel::Model CM, 44234353Sdim CodeGenOpt::Level OL); 45193323Sed 46218893Sdim virtual const TargetFrameLowering *getFrameLowering() const { 47218893Sdim return &FrameLowering; 48218893Sdim } 49193323Sed virtual const MSP430InstrInfo *getInstrInfo() const { return &InstrInfo; } 50243830Sdim virtual const DataLayout *getDataLayout() const { return &DL;} 51193323Sed virtual const MSP430Subtarget *getSubtargetImpl() const { return &Subtarget; } 52193323Sed 53193323Sed virtual const TargetRegisterInfo *getRegisterInfo() const { 54193323Sed return &InstrInfo.getRegisterInfo(); 55193323Sed } 56193323Sed 57207618Srdivacky virtual const MSP430TargetLowering *getTargetLowering() const { 58207618Srdivacky return &TLInfo; 59193323Sed } 60193323Sed 61208599Srdivacky virtual const MSP430SelectionDAGInfo* getSelectionDAGInfo() const { 62208599Srdivacky return &TSInfo; 63208599Srdivacky } 64234353Sdim virtual TargetPassConfig *createPassConfig(PassManagerBase &PM); 65193323Sed}; // MSP430TargetMachine. 66193323Sed 67193323Sed} // end namespace llvm 68193323Sed 69193323Sed#endif // LLVM_TARGET_MSP430_TARGETMACHINE_H 70