MSP430TargetMachine.cpp revision 202878
18877Svaleriep//===-- MSP430TargetMachine.cpp - Define TargetMachine for MSP430 ---------===// 210239Svaleriep// 38877Svaleriep// The LLVM Compiler Infrastructure 48877Svaleriep// 58877Svaleriep// This file is distributed under the University of Illinois Open Source 68877Svaleriep// License. See LICENSE.TXT for details. 78877Svaleriep// 88877Svaleriep//===----------------------------------------------------------------------===// 98877Svaleriep// 108877Svaleriep// Top-level implementation for the MSP430 target. 118877Svaleriep// 128877Svaleriep//===----------------------------------------------------------------------===// 138877Svaleriep 148877Svaleriep#include "MSP430.h" 158877Svaleriep#include "MSP430MCAsmInfo.h" 168877Svaleriep#include "MSP430TargetMachine.h" 178877Svaleriep#include "llvm/PassManager.h" 188877Svaleriep#include "llvm/CodeGen/Passes.h" 198877Svaleriep#include "llvm/MC/MCAsmInfo.h" 208877Svaleriep#include "llvm/Target/TargetRegistry.h" 218877Svaleriepusing namespace llvm; 228877Svaleriep 238877Svaleriepextern "C" void LLVMInitializeMSP430Target() { 248877Svaleriep // Register the target. 258877Svaleriep RegisterTargetMachine<MSP430TargetMachine> X(TheMSP430Target); 2610239Svaleriep RegisterAsmInfo<MSP430MCAsmInfo> Z(TheMSP430Target); 278877Svaleriep} 288877Svaleriep 298877SvaleriepMSP430TargetMachine::MSP430TargetMachine(const Target &T, 308877Svaleriep const std::string &TT, 318877Svaleriep const std::string &FS) : 328877Svaleriep LLVMTargetMachine(T, TT), 338877Svaleriep Subtarget(TT, FS), 348877Svaleriep // FIXME: Check TargetData string. 358877Svaleriep DataLayout("e-p:16:16:16-i8:8:8-i16:16:16-i32:16:32-n8:16"), 368877Svaleriep InstrInfo(*this), TLInfo(*this), 378877Svaleriep FrameInfo(TargetFrameInfo::StackGrowsDown, 2, -2) { } 388877Svaleriep 398877Svaleriep 408877Svaleriepbool MSP430TargetMachine::addInstSelector(PassManagerBase &PM, 418877Svaleriep CodeGenOpt::Level OptLevel) { 428877Svaleriep // Install an instruction selector. 438877Svaleriep PM.add(createMSP430ISelDag(*this, OptLevel)); 448877Svaleriep return false; 458877Svaleriep} 468877Svaleriep 4710239Svaleriepbool MSP430TargetMachine::addPreEmitPass(PassManagerBase &PM, 488877Svaleriep CodeGenOpt::Level OptLevel) { 498877Svaleriep // Must run branch selection immediately preceding the asm printer. 508877Svaleriep PM.add(createMSP430BranchSelectionPass()); 518877Svaleriep return false; 528877Svaleriep} 538877Svaleriep