diff options
Diffstat (limited to 'llvm/lib')
12 files changed, 31 insertions, 218 deletions
diff --git a/llvm/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp b/llvm/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp index a975a1c6e90..163a0a98758 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");  } diff --git a/llvm/lib/Target/Alpha/TargetInfo/AlphaTargetInfo.cpp b/llvm/lib/Target/Alpha/TargetInfo/AlphaTargetInfo.cpp index 1e4db94ef0d..f7099b9ae97 100644 --- a/llvm/lib/Target/Alpha/TargetInfo/AlphaTargetInfo.cpp +++ b/llvm/lib/Target/Alpha/TargetInfo/AlphaTargetInfo.cpp @@ -14,18 +14,7 @@ using namespace llvm;  llvm::Target llvm::TheAlphaTarget; -static unsigned Alpha_TripleMatchQuality(const std::string &TT) { -  // We strongly match "alpha*". -  if (TT.size() >= 5 && TT[0] == 'a' && TT[1] == 'l' && TT[2] == 'p' && -      TT[3] == 'h' && TT[4] == 'a') -    return 20; - -  return 0; -} -  extern "C" void LLVMInitializeAlphaTargetInfo() {  -  TargetRegistry::RegisterTarget(TheAlphaTarget, "alpha", -                                  "Alpha [experimental]", -                                  &Alpha_TripleMatchQuality, -                                  /*HasJIT=*/true); +  RegisterTarget<Triple::alpha, /*HasJIT=*/true> +    X(TheAlphaTarget, "alpha", "Alpha [experimental]");  } diff --git a/llvm/lib/Target/CBackend/TargetInfo/CBackendTargetInfo.cpp b/llvm/lib/Target/CBackend/TargetInfo/CBackendTargetInfo.cpp index c30c84d069f..f7e8ff25484 100644 --- a/llvm/lib/Target/CBackend/TargetInfo/CBackendTargetInfo.cpp +++ b/llvm/lib/Target/CBackend/TargetInfo/CBackendTargetInfo.cpp @@ -14,14 +14,6 @@ using namespace llvm;  Target llvm::TheCBackendTarget; -static unsigned CBackend_TripleMatchQuality(const std::string &TT) { -  // This class always works, but must be requested explicitly on  -  // llc command line. -  return 0; -} -  extern "C" void LLVMInitializeCBackendTargetInfo() {  -  TargetRegistry::RegisterTarget(TheCBackendTarget, "c", -                                  "C backend", -                                  &CBackend_TripleMatchQuality); +  RegisterTarget<> X(TheCBackendTarget, "c", "C backend");  } diff --git a/llvm/lib/Target/CellSPU/TargetInfo/CellSPUTargetInfo.cpp b/llvm/lib/Target/CellSPU/TargetInfo/CellSPUTargetInfo.cpp index ea3b8f9059c..049ea236e99 100644 --- a/llvm/lib/Target/CellSPU/TargetInfo/CellSPUTargetInfo.cpp +++ b/llvm/lib/Target/CellSPU/TargetInfo/CellSPUTargetInfo.cpp @@ -14,19 +14,7 @@ using namespace llvm;  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]");  } diff --git a/llvm/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp b/llvm/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp index e2a71238d94..f9ca5c49c97 100644 --- a/llvm/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp +++ b/llvm/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp @@ -14,17 +14,7 @@ using namespace llvm;  Target llvm::TheMSP430Target; -static unsigned MSP430_TripleMatchQuality(const std::string &TT) { -  // We strongly match msp430 -  if (TT.size() >= 6 && TT[0] == 'm' && TT[1] == 's' && TT[2] == 'p' && -      TT[3] == '4' &&  TT[4] == '3' && TT[5] == '0') -    return 20; - -  return 0; -} -  extern "C" void LLVMInitializeMSP430TargetInfo() {  -  TargetRegistry::RegisterTarget(TheMSP430Target, "msp430",     -                                  "MSP430 [experimental]", -                                  &MSP430_TripleMatchQuality); +  RegisterTarget<Triple::msp430>  +    X(TheMSP430Target, "msp430", "MSP430 [experimental]");  } diff --git a/llvm/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp b/llvm/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp index 4f075456032..cc3d61e4e71 100644 --- a/llvm/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp +++ b/llvm/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp @@ -12,43 +12,10 @@  #include "llvm/Target/TargetRegistry.h"  using namespace llvm; -Target llvm::TheMipsTarget; - -static unsigned Mips_TripleMatchQuality(const std::string &TT) { -  // We strongly match "mips*-*". -  if (TT.size() >= 5 && std::string(TT.begin(), TT.begin()+5) == "mips-") -    return 20; -   -  if (TT.size() >= 13 && std::string(TT.begin(),  -      TT.begin()+13) == "mipsallegrex-") -    return 20; - -  return 0; -} - -Target llvm::TheMipselTarget; - -static unsigned Mipsel_TripleMatchQuality(const std::string &TT) { -  // We strongly match "mips*el-*". -  if (TT.size() >= 7 && std::string(TT.begin(), TT.begin()+7) == "mipsel-") -    return 20; - -  if (TT.size() >= 15 && std::string(TT.begin(),  -      TT.begin()+15) == "mipsallegrexel-") -    return 20; - -  if (TT.size() == 3 && std::string(TT.begin(), TT.begin()+3) == "psp") -    return 20; - -  return 0; -} +Target llvm::TheMipsTarget, llvm::TheMipselTarget;  extern "C" void LLVMInitializeMipsTargetInfo() {  -  TargetRegistry::RegisterTarget(TheMipsTarget, "mips", -                                  "Mips", -                                  &Mips_TripleMatchQuality); +  RegisterTarget<Triple::mips> X(TheMipsTarget, "mips", "Mips"); -  TargetRegistry::RegisterTarget(TheMipselTarget, "mipsel", -                                  "Mipsel", -                                  &Mipsel_TripleMatchQuality); +  RegisterTarget<Triple::mipsel> Y(TheMipselTarget, "mipsel", "Mipsel");  } diff --git a/llvm/lib/Target/PIC16/TargetInfo/PIC16TargetInfo.cpp b/llvm/lib/Target/PIC16/TargetInfo/PIC16TargetInfo.cpp index 87341b20e21..46cc81967eb 100644 --- a/llvm/lib/Target/PIC16/TargetInfo/PIC16TargetInfo.cpp +++ b/llvm/lib/Target/PIC16/TargetInfo/PIC16TargetInfo.cpp @@ -12,24 +12,10 @@  #include "llvm/Target/TargetRegistry.h"  using namespace llvm; -Target llvm::ThePIC16Target; - -static unsigned PIC16_TripleMatchQuality(const std::string &TT) { -  return 0; -} - -Target llvm::TheCooperTarget; - -static unsigned Cooper_TripleMatchQuality(const std::string &TT) { -  return 0; -} +Target llvm::ThePIC16Target, llvm::TheCooperTarget;  extern "C" void LLVMInitializePIC16TargetInfo() {  -  TargetRegistry::RegisterTarget(ThePIC16Target, "pic16", -                                  "PIC16 14-bit [experimental]", -                                  &PIC16_TripleMatchQuality); +  RegisterTarget<> X(ThePIC16Target, "pic16", "PIC16 14-bit [experimental]"); -  TargetRegistry::RegisterTarget(TheCooperTarget, "cooper",     -                                  "PIC16 Cooper [experimental]", -                                  &Cooper_TripleMatchQuality); +  RegisterTarget<> Y(TheCooperTarget, "cooper", "PIC16 Cooper [experimental]");  } diff --git a/llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp b/llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp index 7fc73c139a1..ad607d0ade6 100644 --- a/llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp +++ b/llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp @@ -12,34 +12,12 @@  #include "llvm/Target/TargetRegistry.h"  using namespace llvm; -Target llvm::ThePPC32Target; - -static unsigned PPC32_TripleMatchQuality(const std::string &TT) { -  // We strongly match "powerpc-*". -  if (TT.size() >= 8 && std::string(TT.begin(), TT.begin()+8) == "powerpc-") -    return 20; - -  return 0; -} - -Target llvm::ThePPC64Target; - -static unsigned PPC64_TripleMatchQuality(const std::string &TT) { -  // We strongly match "powerpc64-*". -  if (TT.size() >= 10 && std::string(TT.begin(), TT.begin()+10) == "powerpc64-") -    return 20; - -  return 0; -} +Target llvm::ThePPC32Target, llvm::ThePPC64Target;  extern "C" void LLVMInitializePowerPCTargetInfo() {  -  TargetRegistry::RegisterTarget(ThePPC32Target, "ppc32", -                                  "PowerPC 32", -                                  &PPC32_TripleMatchQuality, -                                 /*HasJIT=*/true); +  RegisterTarget<Triple::ppc, /*HasJIT=*/true> +    X(ThePPC32Target, "ppc32", "PowerPC 32"); -  TargetRegistry::RegisterTarget(ThePPC64Target, "ppc64", -                                  "PowerPC 64", -                                  &PPC64_TripleMatchQuality, -                                 /*HasJIT=*/true); +  RegisterTarget<Triple::ppc64, /*HasJIT=*/true> +    Y(ThePPC64Target, "ppc64", "PowerPC 64");  } diff --git a/llvm/lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp b/llvm/lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp index 451a86419b5..75200ab3ebf 100644 --- a/llvm/lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp +++ b/llvm/lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp @@ -14,15 +14,6 @@ using namespace llvm;  Target llvm::TheSparcTarget; -static unsigned Sparc_TripleMatchQuality(const std::string &TT) { -  if (TT.size() >= 6 && std::string(TT.begin(), TT.begin()+6) == "sparc-") -    return 20; - -  return 0; -} -  extern "C" void LLVMInitializeSparcTargetInfo() {  -  TargetRegistry::RegisterTarget(TheSparcTarget, "sparc", -                                  "Sparc", -                                  &Sparc_TripleMatchQuality); +  RegisterTarget<Triple::sparc> (TheSparcTarget, "sparc", "Sparc");  } diff --git a/llvm/lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp b/llvm/lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp index e063a911d0d..8272b118820 100644 --- a/llvm/lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp +++ b/llvm/lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp @@ -14,17 +14,6 @@ using namespace llvm;  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");  } diff --git a/llvm/lib/Target/X86/TargetInfo/X86TargetInfo.cpp b/llvm/lib/Target/X86/TargetInfo/X86TargetInfo.cpp index d371bced71f..08d4d84f8a8 100644 --- a/llvm/lib/Target/X86/TargetInfo/X86TargetInfo.cpp +++ b/llvm/lib/Target/X86/TargetInfo/X86TargetInfo.cpp @@ -12,36 +12,12 @@  #include "llvm/Target/TargetRegistry.h"  using namespace llvm; -Target llvm::TheX86_32Target; - -static unsigned X86_32_TripleMatchQuality(const std::string &TT) { -  // We strongly match "i[3-9]86-*". -  if (TT.size() >= 5 && TT[0] == 'i' && TT[2] == '8' && TT[3] == '6' && -      TT[4] == '-' && TT[1] - '3' < 6) -    return 20; - -  return 0; -} - -Target llvm::TheX86_64Target; - -static unsigned X86_64_TripleMatchQuality(const std::string &TT) { -  // We strongly match "x86_64-*". -  if (TT.size() >= 7 && TT[0] == 'x' && TT[1] == '8' && TT[2] == '6' && -      TT[3] == '_' && TT[4] == '6' && TT[5] == '4' && TT[6] == '-') -    return 20; -   -  return 0; -} +Target llvm::TheX86_32Target, llvm::TheX86_64Target;  extern "C" void LLVMInitializeX86TargetInfo() {  -  TargetRegistry::RegisterTarget(TheX86_32Target, "x86",     -                                  "32-bit X86: Pentium-Pro and above", -                                  &X86_32_TripleMatchQuality, -                                  /*HasJIT=*/true); +  RegisterTarget<Triple::x86, /*HasJIT=*/true> +    X(TheX86_32Target, "x86", "32-bit X86: Pentium-Pro and above"); -  TargetRegistry::RegisterTarget(TheX86_64Target, "x86-64",     -                                  "64-bit X86: EM64T and AMD64", -                                  &X86_64_TripleMatchQuality, -                                  /*HasJIT=*/true); +  RegisterTarget<Triple::x86_64, /*HasJIT=*/true> +    Y(TheX86_64Target, "x86-64", "64-bit X86: EM64T and AMD64");  } diff --git a/llvm/lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp b/llvm/lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp index 17acb3266f8..7aa8965c4ac 100644 --- a/llvm/lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp +++ b/llvm/lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp @@ -14,15 +14,6 @@ using namespace llvm;  Target llvm::TheXCoreTarget; -static unsigned XCore_TripleMatchQuality(const std::string &TT) { -  if (TT.size() >= 6 && std::string(TT.begin(), TT.begin()+6) == "xcore-") -    return 20; - -  return 0; -} -  extern "C" void LLVMInitializeXCoreTargetInfo() {  -  TargetRegistry::RegisterTarget(TheXCoreTarget, "xcore", -                                  "XCore", -                                  &XCore_TripleMatchQuality); +  RegisterTarget<Triple::xcore> X(TheXCoreTarget, "xcore", "XCore");  }  | 

