blob: a975a1c6e9027f19e8957d0fea3b5a3ab8b7dfaa [file] [log] [blame]
Daniel Dunbar0eb66992009-07-15 06:35:19 +00001//===-- ARMTargetInfo.cpp - ARM Target Implementation ---------------------===//
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
Daniel Dunbar0b0441e2009-07-18 23:03:22 +000010#include "ARM.h"
Daniel Dunbar0eb66992009-07-15 06:35:19 +000011#include "llvm/Module.h"
12#include "llvm/Target/TargetRegistry.h"
13using namespace llvm;
14
Daniel Dunbar0b0441e2009-07-18 23:03:22 +000015Target llvm::TheARMTarget;
Daniel Dunbar0eb66992009-07-15 06:35:19 +000016
Daniel Dunbar0eb66992009-07-15 06:35:19 +000017static unsigned ARM_TripleMatchQuality(const std::string &TT) {
18 // Match arm-foo-bar, as well as things like armv5blah-*
19 if (TT.size() >= 4 &&
20 (TT.substr(0, 4) == "arm-" || TT.substr(0, 4) == "armv"))
21 return 20;
22
23 return 0;
24}
25
Daniel Dunbar0b0441e2009-07-18 23:03:22 +000026Target llvm::TheThumbTarget;
Daniel Dunbar0eb66992009-07-15 06:35:19 +000027
Daniel Dunbar0eb66992009-07-15 06:35:19 +000028static unsigned Thumb_TripleMatchQuality(const std::string &TT) {
29 // Match thumb-foo-bar, as well as things like thumbv5blah-*
30 if (TT.size() >= 6 &&
31 (TT.substr(0, 6) == "thumb-" || TT.substr(0, 6) == "thumbv"))
32 return 20;
33
34 return 0;
35}
36
Daniel Dunbar0eb66992009-07-15 06:35:19 +000037extern "C" void LLVMInitializeARMTargetInfo() {
38 TargetRegistry::RegisterTarget(TheARMTarget, "arm",
39 "ARM",
40 &ARM_TripleMatchQuality,
Daniel Dunbar123157a2009-07-25 10:09:50 +000041 /*HasJIT=*/true);
Daniel Dunbar0eb66992009-07-15 06:35:19 +000042
43 TargetRegistry::RegisterTarget(TheThumbTarget, "thumb",
44 "Thumb",
45 &Thumb_TripleMatchQuality,
Daniel Dunbar123157a2009-07-25 10:09:50 +000046 /*HasJIT=*/true);
Daniel Dunbar0eb66992009-07-15 06:35:19 +000047}