diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-07-26 05:03:33 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-07-26 05:03:33 +0000 |
commit | 8977d087c693fd581db82bcff134d12da0f48bd3 (patch) | |
tree | 658de5d523595bb7928de54e705d38109d63e53b /lib/Target | |
parent | 8c2f1d7e44d214bc2242a8c6faa4b624b3876540 (diff) | |
download | external_llvm-8977d087c693fd581db82bcff134d12da0f48bd3.zip external_llvm-8977d087c693fd581db82bcff134d12da0f48bd3.tar.gz external_llvm-8977d087c693fd581db82bcff134d12da0f48bd3.tar.bz2 |
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
Diffstat (limited to 'lib/Target')
-rw-r--r-- | lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp | 34 | ||||
-rw-r--r-- | lib/Target/Alpha/TargetInfo/AlphaTargetInfo.cpp | 15 | ||||
-rw-r--r-- | lib/Target/CBackend/TargetInfo/CBackendTargetInfo.cpp | 10 | ||||
-rw-r--r-- | lib/Target/CellSPU/TargetInfo/CellSPUTargetInfo.cpp | 16 | ||||
-rw-r--r-- | lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp | 14 | ||||
-rw-r--r-- | lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp | 39 | ||||
-rw-r--r-- | lib/Target/PIC16/TargetInfo/PIC16TargetInfo.cpp | 20 | ||||
-rw-r--r-- | lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp | 32 | ||||
-rw-r--r-- | lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp | 11 | ||||
-rw-r--r-- | lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp | 13 | ||||
-rw-r--r-- | lib/Target/X86/TargetInfo/X86TargetInfo.cpp | 34 | ||||
-rw-r--r-- | lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp | 11 |
12 files changed, 31 insertions, 218 deletions
diff --git a/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp b/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp index a975a1c..163a0a9 100644 --- a/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp +++ b/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/lib/Target/Alpha/TargetInfo/AlphaTargetInfo.cpp b/lib/Target/Alpha/TargetInfo/AlphaTargetInfo.cpp index 1e4db94..f7099b9 100644 --- a/lib/Target/Alpha/TargetInfo/AlphaTargetInfo.cpp +++ b/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/lib/Target/CBackend/TargetInfo/CBackendTargetInfo.cpp b/lib/Target/CBackend/TargetInfo/CBackendTargetInfo.cpp index c30c84d..f7e8ff2 100644 --- a/lib/Target/CBackend/TargetInfo/CBackendTargetInfo.cpp +++ b/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/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 @@ 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/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp b/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp index e2a7123..f9ca5c4 100644 --- a/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp +++ b/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/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp b/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp index 4f07545..cc3d61e 100644 --- a/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp +++ b/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/lib/Target/PIC16/TargetInfo/PIC16TargetInfo.cpp b/lib/Target/PIC16/TargetInfo/PIC16TargetInfo.cpp index 87341b2..46cc819 100644 --- a/lib/Target/PIC16/TargetInfo/PIC16TargetInfo.cpp +++ b/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/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp b/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp index 7fc73c1..ad607d0 100644 --- a/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp +++ b/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/lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp b/lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp index 451a864..75200ab 100644 --- a/lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp +++ b/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/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 @@ 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/lib/Target/X86/TargetInfo/X86TargetInfo.cpp b/lib/Target/X86/TargetInfo/X86TargetInfo.cpp index d371bce..08d4d84 100644 --- a/lib/Target/X86/TargetInfo/X86TargetInfo.cpp +++ b/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/lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp b/lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp index 17acb32..7aa8965 100644 --- a/lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp +++ b/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"); } |