Move all of the header files which are involved in modelling the LLVM IR
[oota-llvm.git] / lib / Target / ARM / TargetInfo / ARMTargetInfo.cpp
index d709463a15f5bb58fea01ddcb6531089cb0cf0c2..fa5681fb12bf740b43d6103deeb1d2336320adbd 100644 (file)
@@ -8,92 +8,16 @@
 //===----------------------------------------------------------------------===//
 
 #include "ARM.h"
-#include "llvm/Module.h"
-#include "llvm/Target/TargetRegistry.h"
+#include "llvm/IR/Module.h"
+#include "llvm/Support/TargetRegistry.h"
 using namespace llvm;
 
-Target llvm::TheARMTarget;
-
-static unsigned ARM_JITMatchQuality() {
-#if defined(__arm__)
-  return 10;
-#endif
-  return 0;
-}
-
-static unsigned ARM_TripleMatchQuality(const std::string &TT) {
-  // Match arm-foo-bar, as well as things like armv5blah-*
-  if (TT.size() >= 4 &&
-      (TT.substr(0, 4) == "arm-" || TT.substr(0, 4) == "armv"))
-    return 20;
-
-  return 0;
-}
-
-static unsigned ARM_ModuleMatchQuality(const Module &M) {
-  // Check for a triple match.
-  if (unsigned Q = ARM_TripleMatchQuality(M.getTargetTriple()))
-    return Q;
-
-  // Otherwise if the target triple is non-empty, we don't match.
-  if (!M.getTargetTriple().empty()) return 0;
-
-  if (M.getEndianness()  == Module::LittleEndian &&
-      M.getPointerSize() == Module::Pointer32)
-    return 10;                                   // Weak match
-  else if (M.getEndianness() != Module::AnyEndianness ||
-           M.getPointerSize() != Module::AnyPointerSize)
-    return 0;                                    // Match for some other target
-
-  return ARM_JITMatchQuality()/2;
-}
-
-Target llvm::TheThumbTarget;
-
-static unsigned Thumb_JITMatchQuality() {
-#if defined(__thumb__)
-  return 10;
-#endif
-  return 0;
-}
-
-static unsigned Thumb_TripleMatchQuality(const std::string &TT) {
-  // Match thumb-foo-bar, as well as things like thumbv5blah-*
-  if (TT.size() >= 6 &&
-      (TT.substr(0, 6) == "thumb-" || TT.substr(0, 6) == "thumbv"))
-    return 20;
-
-  return 0;
-}
-
-static unsigned Thumb_ModuleMatchQuality(const Module &M) {
-  // Check for a triple match.
-  if (unsigned Q = Thumb_TripleMatchQuality(M.getTargetTriple()))
-    return Q;
-
-  // Otherwise if the target triple is non-empty, we don't match.
-  if (!M.getTargetTriple().empty()) return 0;
-
-  if (M.getEndianness()  == Module::LittleEndian &&
-      M.getPointerSize() == Module::Pointer32)
-    return 10;                                   // Weak match
-  else if (M.getEndianness() != Module::AnyEndianness ||
-           M.getPointerSize() != Module::AnyPointerSize)
-    return 0;                                    // Match for some other target
-
-  return Thumb_JITMatchQuality()/2;
-}
+Target llvm::TheARMTarget, llvm::TheThumbTarget;
 
 extern "C" void LLVMInitializeARMTargetInfo() { 
-  TargetRegistry::RegisterTarget(TheARMTarget, "arm",    
-                                  "ARM",
-                                  &ARM_TripleMatchQuality,
-                                  &ARM_ModuleMatchQuality,
-                                  &ARM_JITMatchQuality);
+  RegisterTarget<Triple::arm, /*HasJIT=*/true>
+    X(TheARMTarget, "arm", "ARM");
 
-  TargetRegistry::RegisterTarget(TheThumbTarget, "thumb",    
-                                  "Thumb",
-                                  &Thumb_TripleMatchQuality,
-                                  &Thumb_ModuleMatchQuality,
-                                  &Thumb_JITMatchQuality);
+  RegisterTarget<Triple::thumb, /*HasJIT=*/true>
+    Y(TheThumbTarget, "thumb", "Thumb");
 }