blob: b69adf609ee2078ad7c122c0c5852bbea2cb228e [file] [log] [blame]
Jakob Stoklund Olesend9509412009-08-02 17:32:10 +00001//===-- BlackfinTargetMachine.cpp - Define TargetMachine for Blackfin -----===//
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//
11//===----------------------------------------------------------------------===//
12
13#include "BlackfinTargetMachine.h"
14#include "Blackfin.h"
15#include "BlackfinTargetAsmInfo.h"
16#include "llvm/Module.h"
17#include "llvm/PassManager.h"
18#include "llvm/Target/TargetRegistry.h"
19
20using namespace llvm;
21
22extern "C" void LLVMInitializeBlackfinTarget() {
23 RegisterTargetMachine<BlackfinTargetMachine> X(TheBlackfinTarget);
24}
25
26const TargetAsmInfo* BlackfinTargetMachine::createTargetAsmInfo() const {
27 return new BlackfinTargetAsmInfo();
28}
29
30BlackfinTargetMachine::BlackfinTargetMachine(const Target &T,
31 const Module &M,
32 const std::string &FS)
33 : LLVMTargetMachine(T),
34 DataLayout("e-p:32:32-i64:32-f64:32"),
Daniel Dunbar3be03402009-08-02 22:11:08 +000035 Subtarget(M.getTargetTriple(), FS),
Jakob Stoklund Olesend9509412009-08-02 17:32:10 +000036 TLInfo(*this),
37 InstrInfo(Subtarget),
38 FrameInfo(TargetFrameInfo::StackGrowsDown, 4, 0) {
39}
40
41unsigned BlackfinTargetMachine::getModuleMatchQuality(const Module &M) {
42 std::string TT = M.getTargetTriple();
43 if (TT.size() >= 5 && std::string(TT.begin(), TT.begin()+5) == "bfin-")
44 return 20;
45
46 // Otherwise we don't match.
47 return 0;
48}
49
50bool BlackfinTargetMachine::addInstSelector(PassManagerBase &PM,
51 CodeGenOpt::Level OptLevel) {
52 PM.add(createBlackfinISelDag(*this, OptLevel));
53 return false;
54}