Factor commonality in triple match routines into helper template for registering
classes, and migrate existing targets over.

llvm-svn: 77126
diff --git a/llvm/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp b/llvm/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp
index a975a1c..163a0a9 100644
--- a/llvm/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp
+++ b/llvm/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp
@@ -12,36 +12,12 @@
 #include "llvm/Target/TargetRegistry.h"
 using namespace llvm;
 
-Target llvm::TheARMTarget;
-
-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;
-}
-
-Target llvm::TheThumbTarget;
-
-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;
-}
+Target llvm::TheARMTarget, llvm::TheThumbTarget;
 
 extern "C" void LLVMInitializeARMTargetInfo() { 
-  TargetRegistry::RegisterTarget(TheARMTarget, "arm",    
-                                  "ARM",
-                                  &ARM_TripleMatchQuality,
-                                 /*HasJIT=*/true);
+  RegisterTarget<Triple::arm, /*HasJIT=*/true>
+    X(TheARMTarget, "arm", "ARM");
 
-  TargetRegistry::RegisterTarget(TheThumbTarget, "thumb",    
-                                  "Thumb",
-                                  &Thumb_TripleMatchQuality,
-                                 /*HasJIT=*/true);
+  RegisterTarget<Triple::thumb, /*HasJIT=*/true>
+    Y(TheThumbTarget, "thumb", "Thumb");
 }