aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Sanders <daniel_l_sanders@apple.com>2017-11-15 23:55:44 +0000
committerDaniel Sanders <daniel_l_sanders@apple.com>2017-11-15 23:55:44 +0000
commit355825a81ef3e0a8d77826a689fc1111fe6a52ee (patch)
treeb59ab0421469276a35ead39e29aeab8b1df11270 /lib
parentc39780185f3a0f09522bb21d6033df81bb8df692 (diff)
Add backend name to Target to enable runtime info to be fed back into TableGen
Summary: Make it possible to feed runtime information back to tablegen to enable profile-guided tablegen-eration, detection of untested tablegen definitions, etc. Being a cross-compiler by nature, LLVM will potentially collect data for multiple architectures (e.g. when running 'ninja check'). We therefore need a way for TableGen to figure out what data applies to the backend it is generating at the time. This patch achieves that by including the name of the 'def X : Target ...' for the backend in the TargetRegistry. Reviewers: qcolombet Reviewed By: qcolombet Subscribers: jholewinski, arsenm, jyknight, aditya_nandakumar, sdardis, nemanjai, ab, nhaehnle, t.p.northover, javed.absar, qcolombet, llvm-commits, fedor.sergeev Differential Revision: https://reviews.llvm.org/D39742 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@318352 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Support/TargetRegistry.cpp5
-rw-r--r--lib/Target/AArch64/TargetInfo/AArch64TargetInfo.cpp6
-rw-r--r--lib/Target/AMDGPU/TargetInfo/AMDGPUTargetInfo.cpp4
-rw-r--r--lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp8
-rw-r--r--lib/Target/BPF/TargetInfo/BPFTargetInfo.cpp9
-rw-r--r--lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp4
-rw-r--r--lib/Target/Lanai/TargetInfo/LanaiTargetInfo.cpp3
-rw-r--r--lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp2
-rw-r--r--lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp8
-rw-r--r--lib/Target/NVPTX/TargetInfo/NVPTXTargetInfo.cpp4
-rw-r--r--lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp6
-rw-r--r--lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp10
-rw-r--r--lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp4
-rw-r--r--lib/Target/X86/TargetInfo/X86TargetInfo.cpp4
-rw-r--r--lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp3
15 files changed, 42 insertions, 38 deletions
diff --git a/lib/Support/TargetRegistry.cpp b/lib/Support/TargetRegistry.cpp
index b5c28325311..ed999fce5da 100644
--- a/lib/Support/TargetRegistry.cpp
+++ b/lib/Support/TargetRegistry.cpp
@@ -86,9 +86,9 @@ const Target *TargetRegistry::lookupTarget(const std::string &TT,
return &*I;
}
-void TargetRegistry::RegisterTarget(Target &T,
- const char *Name,
+void TargetRegistry::RegisterTarget(Target &T, const char *Name,
const char *ShortDesc,
+ const char *BackendName,
Target::ArchMatchFnTy ArchMatchFn,
bool HasJIT) {
assert(Name && ShortDesc && ArchMatchFn &&
@@ -105,6 +105,7 @@ void TargetRegistry::RegisterTarget(Target &T,
T.Name = Name;
T.ShortDesc = ShortDesc;
+ T.BackendName = BackendName;
T.ArchMatchFn = ArchMatchFn;
T.HasJIT = HasJIT;
}
diff --git a/lib/Target/AArch64/TargetInfo/AArch64TargetInfo.cpp b/lib/Target/AArch64/TargetInfo/AArch64TargetInfo.cpp
index 7ac9a5a0848..8fb161574c5 100644
--- a/lib/Target/AArch64/TargetInfo/AArch64TargetInfo.cpp
+++ b/lib/Target/AArch64/TargetInfo/AArch64TargetInfo.cpp
@@ -29,11 +29,11 @@ extern "C" void LLVMInitializeAArch64TargetInfo() {
// Now register the "arm64" name for use with "-march". We don't want it to
// take possession of the Triple::aarch64 tag though.
TargetRegistry::RegisterTarget(getTheARM64Target(), "arm64",
- "ARM64 (little endian)",
+ "ARM64 (little endian)", "AArch64",
[](Triple::ArchType) { return false; }, true);
RegisterTarget<Triple::aarch64, /*HasJIT=*/true> Z(
- getTheAArch64leTarget(), "aarch64", "AArch64 (little endian)");
+ getTheAArch64leTarget(), "aarch64", "AArch64 (little endian)", "AArch64");
RegisterTarget<Triple::aarch64_be, /*HasJIT=*/true> W(
- getTheAArch64beTarget(), "aarch64_be", "AArch64 (big endian)");
+ getTheAArch64beTarget(), "aarch64_be", "AArch64 (big endian)", "AArch64");
}
diff --git a/lib/Target/AMDGPU/TargetInfo/AMDGPUTargetInfo.cpp b/lib/Target/AMDGPU/TargetInfo/AMDGPUTargetInfo.cpp
index 92fb762ebd7..f61e2e413ad 100644
--- a/lib/Target/AMDGPU/TargetInfo/AMDGPUTargetInfo.cpp
+++ b/lib/Target/AMDGPU/TargetInfo/AMDGPUTargetInfo.cpp
@@ -31,7 +31,7 @@ Target &llvm::getTheGCNTarget() {
/// \brief Extern function to initialize the targets for the AMDGPU backend
extern "C" void LLVMInitializeAMDGPUTargetInfo() {
RegisterTarget<Triple::r600, false> R600(getTheAMDGPUTarget(), "r600",
- "AMD GPUs HD2XXX-HD6XXX");
+ "AMD GPUs HD2XXX-HD6XXX", "AMDGPU");
RegisterTarget<Triple::amdgcn, false> GCN(getTheGCNTarget(), "amdgcn",
- "AMD GCN GPUs");
+ "AMD GCN GPUs", "AMDGPU");
}
diff --git a/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp b/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp
index caa69f8d71b..b0491a4108a 100644
--- a/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp
+++ b/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp
@@ -30,12 +30,12 @@ Target &llvm::getTheThumbBETarget() {
extern "C" void LLVMInitializeARMTargetInfo() {
RegisterTarget<Triple::arm, /*HasJIT=*/true> X(getTheARMLETarget(), "arm",
- "ARM");
+ "ARM", "ARM");
RegisterTarget<Triple::armeb, /*HasJIT=*/true> Y(getTheARMBETarget(), "armeb",
- "ARM (big endian)");
+ "ARM (big endian)", "ARM");
RegisterTarget<Triple::thumb, /*HasJIT=*/true> A(getTheThumbLETarget(),
- "thumb", "Thumb");
+ "thumb", "Thumb", "ARM");
RegisterTarget<Triple::thumbeb, /*HasJIT=*/true> B(
- getTheThumbBETarget(), "thumbeb", "Thumb (big endian)");
+ getTheThumbBETarget(), "thumbeb", "Thumb (big endian)", "ARM");
}
diff --git a/lib/Target/BPF/TargetInfo/BPFTargetInfo.cpp b/lib/Target/BPF/TargetInfo/BPFTargetInfo.cpp
index 265180b9987..1f7b8a04d58 100644
--- a/lib/Target/BPF/TargetInfo/BPFTargetInfo.cpp
+++ b/lib/Target/BPF/TargetInfo/BPFTargetInfo.cpp
@@ -28,9 +28,10 @@ Target &getTheBPFTarget() {
extern "C" void LLVMInitializeBPFTargetInfo() {
TargetRegistry::RegisterTarget(getTheBPFTarget(), "bpf", "BPF (host endian)",
- [](Triple::ArchType) { return false; }, true);
- RegisterTarget<Triple::bpfel, /*HasJIT=*/true> X(getTheBPFleTarget(), "bpfel",
- "BPF (little endian)");
+ "BPF", [](Triple::ArchType) { return false; },
+ true);
+ RegisterTarget<Triple::bpfel, /*HasJIT=*/true> X(
+ getTheBPFleTarget(), "bpfel", "BPF (little endian)", "BPF");
RegisterTarget<Triple::bpfeb, /*HasJIT=*/true> Y(getTheBPFbeTarget(), "bpfeb",
- "BPF (big endian)");
+ "BPF (big endian)", "BPF");
}
diff --git a/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp b/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp
index 0554646bb6b..a330f27ed30 100644
--- a/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp
+++ b/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp
@@ -18,6 +18,6 @@ Target &llvm::getTheHexagonTarget() {
}
extern "C" void LLVMInitializeHexagonTargetInfo() {
- RegisterTarget<Triple::hexagon, /*HasJIT=*/false> X(getTheHexagonTarget(),
- "hexagon", "Hexagon");
+ RegisterTarget<Triple::hexagon, /*HasJIT=*/false> X(
+ getTheHexagonTarget(), "hexagon", "Hexagon", "Hexagon");
}
diff --git a/lib/Target/Lanai/TargetInfo/LanaiTargetInfo.cpp b/lib/Target/Lanai/TargetInfo/LanaiTargetInfo.cpp
index e377db1d49d..5eed0cb2836 100644
--- a/lib/Target/Lanai/TargetInfo/LanaiTargetInfo.cpp
+++ b/lib/Target/Lanai/TargetInfo/LanaiTargetInfo.cpp
@@ -21,5 +21,6 @@ Target &getTheLanaiTarget() {
} // namespace llvm
extern "C" void LLVMInitializeLanaiTargetInfo() {
- RegisterTarget<Triple::lanai> X(getTheLanaiTarget(), "lanai", "Lanai");
+ RegisterTarget<Triple::lanai> X(getTheLanaiTarget(), "lanai", "Lanai",
+ "Lanai");
}
diff --git a/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp b/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp
index 62f52a19367..dfa21f580cb 100644
--- a/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp
+++ b/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp
@@ -19,5 +19,5 @@ Target &llvm::getTheMSP430Target() {
extern "C" void LLVMInitializeMSP430TargetInfo() {
RegisterTarget<Triple::msp430> X(getTheMSP430Target(), "msp430",
- "MSP430 [experimental]");
+ "MSP430 [experimental]", "MSP430");
}
diff --git a/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp b/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp
index 4c1edfaaaec..ab494d5bf41 100644
--- a/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp
+++ b/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp
@@ -32,17 +32,17 @@ Target &llvm::getTheMips64elTarget() {
extern "C" void LLVMInitializeMipsTargetInfo() {
RegisterTarget<Triple::mips,
/*HasJIT=*/true>
- X(getTheMipsTarget(), "mips", "Mips");
+ X(getTheMipsTarget(), "mips", "Mips", "Mips");
RegisterTarget<Triple::mipsel,
/*HasJIT=*/true>
- Y(getTheMipselTarget(), "mipsel", "Mipsel");
+ Y(getTheMipselTarget(), "mipsel", "Mipsel", "Mips");
RegisterTarget<Triple::mips64,
/*HasJIT=*/true>
- A(getTheMips64Target(), "mips64", "Mips64 [experimental]");
+ A(getTheMips64Target(), "mips64", "Mips64 [experimental]", "Mips");
RegisterTarget<Triple::mips64el,
/*HasJIT=*/true>
- B(getTheMips64elTarget(), "mips64el", "Mips64el [experimental]");
+ B(getTheMips64elTarget(), "mips64el", "Mips64el [experimental]", "Mips");
}
diff --git a/lib/Target/NVPTX/TargetInfo/NVPTXTargetInfo.cpp b/lib/Target/NVPTX/TargetInfo/NVPTXTargetInfo.cpp
index d44876abf72..803d643844f 100644
--- a/lib/Target/NVPTX/TargetInfo/NVPTXTargetInfo.cpp
+++ b/lib/Target/NVPTX/TargetInfo/NVPTXTargetInfo.cpp
@@ -23,7 +23,7 @@ Target &llvm::getTheNVPTXTarget64() {
extern "C" void LLVMInitializeNVPTXTargetInfo() {
RegisterTarget<Triple::nvptx> X(getTheNVPTXTarget32(), "nvptx",
- "NVIDIA PTX 32-bit");
+ "NVIDIA PTX 32-bit", "NVPTX");
RegisterTarget<Triple::nvptx64> Y(getTheNVPTXTarget64(), "nvptx64",
- "NVIDIA PTX 64-bit");
+ "NVIDIA PTX 64-bit", "NVPTX");
}
diff --git a/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp b/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp
index a637dd11f81..97959526447 100644
--- a/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp
+++ b/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp
@@ -27,11 +27,11 @@ Target &llvm::getThePPC64LETarget() {
extern "C" void LLVMInitializePowerPCTargetInfo() {
RegisterTarget<Triple::ppc, /*HasJIT=*/true> X(getThePPC32Target(), "ppc32",
- "PowerPC 32");
+ "PowerPC 32", "PPC");
RegisterTarget<Triple::ppc64, /*HasJIT=*/true> Y(getThePPC64Target(), "ppc64",
- "PowerPC 64");
+ "PowerPC 64", "PPC");
RegisterTarget<Triple::ppc64le, /*HasJIT=*/true> Z(
- getThePPC64LETarget(), "ppc64le", "PowerPC 64 LE");
+ getThePPC64LETarget(), "ppc64le", "PowerPC 64 LE", "PPC");
}
diff --git a/lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp b/lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp
index 66178acd52b..d030bd9f232 100644
--- a/lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp
+++ b/lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp
@@ -27,9 +27,9 @@ Target &llvm::getTheSparcelTarget() {
extern "C" void LLVMInitializeSparcTargetInfo() {
RegisterTarget<Triple::sparc, /*HasJIT=*/true> X(getTheSparcTarget(), "sparc",
- "Sparc");
- RegisterTarget<Triple::sparcv9, /*HasJIT=*/true> Y(getTheSparcV9Target(),
- "sparcv9", "Sparc V9");
- RegisterTarget<Triple::sparcel, /*HasJIT=*/true> Z(getTheSparcelTarget(),
- "sparcel", "Sparc LE");
+ "Sparc", "Sparc");
+ RegisterTarget<Triple::sparcv9, /*HasJIT=*/true> Y(
+ getTheSparcV9Target(), "sparcv9", "Sparc V9", "Sparc");
+ RegisterTarget<Triple::sparcel, /*HasJIT=*/true> Z(
+ getTheSparcelTarget(), "sparcel", "Sparc LE", "Sparc");
}
diff --git a/lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp b/lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp
index d3c53a43b39..e2b9efd35d3 100644
--- a/lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp
+++ b/lib/Target/SystemZ/TargetInfo/SystemZTargetInfo.cpp
@@ -18,6 +18,6 @@ Target &llvm::getTheSystemZTarget() {
}
extern "C" void LLVMInitializeSystemZTargetInfo() {
- RegisterTarget<Triple::systemz, /*HasJIT=*/true> X(getTheSystemZTarget(),
- "systemz", "SystemZ");
+ RegisterTarget<Triple::systemz, /*HasJIT=*/true> X(
+ getTheSystemZTarget(), "systemz", "SystemZ", "SystemZ");
}
diff --git a/lib/Target/X86/TargetInfo/X86TargetInfo.cpp b/lib/Target/X86/TargetInfo/X86TargetInfo.cpp
index d2654fc67ed..16c2b56c48b 100644
--- a/lib/Target/X86/TargetInfo/X86TargetInfo.cpp
+++ b/lib/Target/X86/TargetInfo/X86TargetInfo.cpp
@@ -22,8 +22,8 @@ Target &llvm::getTheX86_64Target() {
extern "C" void LLVMInitializeX86TargetInfo() {
RegisterTarget<Triple::x86, /*HasJIT=*/true> X(
- getTheX86_32Target(), "x86", "32-bit X86: Pentium-Pro and above");
+ getTheX86_32Target(), "x86", "32-bit X86: Pentium-Pro and above", "X86");
RegisterTarget<Triple::x86_64, /*HasJIT=*/true> Y(
- getTheX86_64Target(), "x86-64", "64-bit X86: EM64T and AMD64");
+ getTheX86_64Target(), "x86-64", "64-bit X86: EM64T and AMD64", "X86");
}
diff --git a/lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp b/lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp
index df5774c7e8e..41f4078cc32 100644
--- a/lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp
+++ b/lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp
@@ -18,5 +18,6 @@ Target &llvm::getTheXCoreTarget() {
}
extern "C" void LLVMInitializeXCoreTargetInfo() {
- RegisterTarget<Triple::xcore> X(getTheXCoreTarget(), "xcore", "XCore");
+ RegisterTarget<Triple::xcore> X(getTheXCoreTarget(), "xcore", "XCore",
+ "XCore");
}