MSP430TargetMachine.cpp revision 218893
1193323Sed//===-- MSP430TargetMachine.cpp - Define TargetMachine for MSP430 ---------===// 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// Top-level implementation for the MSP430 target. 11193323Sed// 12193323Sed//===----------------------------------------------------------------------===// 13193323Sed 14193323Sed#include "MSP430.h" 15198090Srdivacky#include "MSP430MCAsmInfo.h" 16193323Sed#include "MSP430TargetMachine.h" 17193323Sed#include "llvm/PassManager.h" 18193323Sed#include "llvm/CodeGen/Passes.h" 19198090Srdivacky#include "llvm/MC/MCAsmInfo.h" 20198090Srdivacky#include "llvm/Target/TargetRegistry.h" 21193323Sedusing namespace llvm; 22193323Sed 23198090Srdivackyextern "C" void LLVMInitializeMSP430Target() { 24198090Srdivacky // Register the target. 25198090Srdivacky RegisterTargetMachine<MSP430TargetMachine> X(TheMSP430Target); 26198090Srdivacky RegisterAsmInfo<MSP430MCAsmInfo> Z(TheMSP430Target); 27198090Srdivacky} 28193323Sed 29198090SrdivackyMSP430TargetMachine::MSP430TargetMachine(const Target &T, 30198090Srdivacky const std::string &TT, 31218893Sdim const std::string &FS) 32218893Sdim : LLVMTargetMachine(T, TT), 33218893Sdim Subtarget(TT, FS), 34218893Sdim // FIXME: Check TargetData string. 35218893Sdim DataLayout("e-p:16:16:16-i8:8:8-i16:16:16-i32:16:32-n8:16"), 36218893Sdim InstrInfo(*this), TLInfo(*this), TSInfo(*this), 37218893Sdim FrameLowering(Subtarget) { } 38193323Sed 39193323Sed 40193323Sedbool MSP430TargetMachine::addInstSelector(PassManagerBase &PM, 41193323Sed CodeGenOpt::Level OptLevel) { 42193323Sed // Install an instruction selector. 43193323Sed PM.add(createMSP430ISelDag(*this, OptLevel)); 44193323Sed return false; 45193323Sed} 46193323Sed 47202878Srdivackybool MSP430TargetMachine::addPreEmitPass(PassManagerBase &PM, 48202878Srdivacky CodeGenOpt::Level OptLevel) { 49202878Srdivacky // Must run branch selection immediately preceding the asm printer. 50202878Srdivacky PM.add(createMSP430BranchSelectionPass()); 51202878Srdivacky return false; 52202878Srdivacky} 53