diff options
| author | Brendon Cahoon <bcahoon@codeaurora.org> | 2018-06-26 18:44:05 +0000 |
|---|---|---|
| committer | Brendon Cahoon <bcahoon@codeaurora.org> | 2018-06-26 18:44:05 +0000 |
| commit | b7169c435af07dbe33ec79ddbdd24f961fb608b9 (patch) | |
| tree | d5441f49cda5d3b3ee44f12e768a72a51744054d /llvm | |
| parent | 0948bc2086e0148c8b8c5471d2f85603aba847f6 (diff) | |
| download | bcm5719-llvm-b7169c435af07dbe33ec79ddbdd24f961fb608b9.tar.gz bcm5719-llvm-b7169c435af07dbe33ec79ddbdd24f961fb608b9.zip | |
[Hexagon] Add a "generic" cpu
Add the generic processor for Hexagon so that it can be used
with 3rd party programs that create a back-end with the
"generic" CPU. This patch also enables the JIT for Hexagon.
Differential Revision: https://reviews.llvm.org/D48571
llvm-svn: 335641
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/Hexagon/Hexagon.td | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonSubtarget.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/Hexagon/generic-cpu.ll | 7 |
5 files changed, 14 insertions, 1 deletions
diff --git a/llvm/lib/Target/Hexagon/Hexagon.td b/llvm/lib/Target/Hexagon/Hexagon.td index fdd1e213199..69e263a425f 100644 --- a/llvm/lib/Target/Hexagon/Hexagon.td +++ b/llvm/lib/Target/Hexagon/Hexagon.td @@ -322,6 +322,10 @@ class Proc<string Name, SchedMachineModel Model, list<SubtargetFeature> Features> : ProcessorModel<Name, Model, Features>; +def : Proc<"generic", HexagonModelV60, + [ArchV4, ArchV5, ArchV55, ArchV60, + FeatureDuplex, FeatureMemops, FeatureNVJ, FeatureNVS, + FeaturePackets, FeatureSmallData]>; def : Proc<"hexagonv4", HexagonModelV4, [ArchV4, FeatureDuplex, FeatureMemops, FeatureNVJ, FeatureNVS, diff --git a/llvm/lib/Target/Hexagon/HexagonSubtarget.cpp b/llvm/lib/Target/Hexagon/HexagonSubtarget.cpp index 864289f59e1..0686d6eb611 100644 --- a/llvm/lib/Target/Hexagon/HexagonSubtarget.cpp +++ b/llvm/lib/Target/Hexagon/HexagonSubtarget.cpp @@ -92,6 +92,7 @@ HexagonSubtarget::HexagonSubtarget(const Triple &TT, StringRef CPU, HexagonSubtarget & HexagonSubtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS) { static std::map<StringRef, Hexagon::ArchEnum> CpuTable{ + {"generic", Hexagon::ArchEnum::V60}, {"hexagonv4", Hexagon::ArchEnum::V4}, {"hexagonv5", Hexagon::ArchEnum::V5}, {"hexagonv55", Hexagon::ArchEnum::V55}, diff --git a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp index b219c16f5d1..b211a81524f 100644 --- a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp +++ b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp @@ -309,6 +309,7 @@ static bool isCPUValid(std::string CPU) { std::vector<std::string> table { + "generic", "hexagonv4", "hexagonv5", "hexagonv55", diff --git a/llvm/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp b/llvm/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp index a330f27ed30..78e2f2b2ddb 100644 --- a/llvm/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp +++ b/llvm/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp @@ -18,6 +18,6 @@ Target &llvm::getTheHexagonTarget() { } extern "C" void LLVMInitializeHexagonTargetInfo() { - RegisterTarget<Triple::hexagon, /*HasJIT=*/false> X( + RegisterTarget<Triple::hexagon, /*HasJIT=*/true> X( getTheHexagonTarget(), "hexagon", "Hexagon", "Hexagon"); } diff --git a/llvm/test/CodeGen/Hexagon/generic-cpu.ll b/llvm/test/CodeGen/Hexagon/generic-cpu.ll new file mode 100644 index 00000000000..10b1030dab1 --- /dev/null +++ b/llvm/test/CodeGen/Hexagon/generic-cpu.ll @@ -0,0 +1,7 @@ +; RUN: llc -mtriple=hexagon-unknown-elf -mcpu=generic < %s | FileCheck %s + +; CHECK-NOT: invalid CPU + +define i32 @test(i32 %a) { + ret i32 0 +} |

