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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77126 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp b/lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp
index e063a91..8272b11 100644
--- a/lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp
+++ b/lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp
@@ -14,17 +14,6 @@
 
 Target llvm::TheSystemZTarget;
 
-static unsigned SystemZ_TripleMatchQuality(const std::string &TT) {
-  // We strongly match s390x
-  if (TT.size() >= 5 && TT[0] == 's' && TT[1] == '3' && TT[2] == '9' &&
-      TT[3] == '0' &&  TT[4] == 'x')
-    return 20;
-
-  return 0;
-}
-
 extern "C" void LLVMInitializeSystemZTargetInfo() {
-  TargetRegistry::RegisterTarget(TheSystemZTarget, "systemz",
-                                 "SystemZ",
-                                 &SystemZ_TripleMatchQuality);
+  RegisterTarget<Triple::systemz> X(TheSystemZTarget, "systemz", "SystemZ");
 }