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/CellSPU/TargetInfo/CellSPUTargetInfo.cpp b/lib/Target/CellSPU/TargetInfo/CellSPUTargetInfo.cpp
index ea3b8f9..049ea23 100644
--- a/lib/Target/CellSPU/TargetInfo/CellSPUTargetInfo.cpp
+++ b/lib/Target/CellSPU/TargetInfo/CellSPUTargetInfo.cpp
@@ -14,19 +14,7 @@
 
 Target llvm::TheCellSPUTarget;
 
-static unsigned CellSPU_TripleMatchQuality(const std::string &TT) {
-  // We strongly match "spu-*" or "cellspu-*".
-  if ((TT.size() == 3 && std::string(TT.begin(), TT.begin()+3) == "spu") ||
-      (TT.size() == 7 && std::string(TT.begin(), TT.begin()+7) == "cellspu") ||
-      (TT.size() >= 4 && std::string(TT.begin(), TT.begin()+4) == "spu-") ||
-      (TT.size() >= 8 && std::string(TT.begin(), TT.begin()+8) == "cellspu-"))
-    return 20;
-
-  return 0;
-}
-
 extern "C" void LLVMInitializeCellSPUTargetInfo() { 
-  TargetRegistry::RegisterTarget(TheCellSPUTarget, "cellspu",
-                                  "STI CBEA Cell SPU [experimental]",
-                                  &CellSPU_TripleMatchQuality);
+  RegisterTarget<Triple::cellspu> 
+    X(TheCellSPUTarget, "cellspu", "STI CBEA Cell SPU [experimental]");
 }