From b7169c435af07dbe33ec79ddbdd24f961fb608b9 Mon Sep 17 00:00:00 2001 From: Brendon Cahoon Date: Tue, 26 Jun 2018 18:44:05 +0000 Subject: [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 --- llvm/lib/Target/Hexagon/Hexagon.td | 4 ++++ llvm/lib/Target/Hexagon/HexagonSubtarget.cpp | 1 + llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp | 1 + llvm/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp | 2 +- llvm/test/CodeGen/Hexagon/generic-cpu.ll | 7 +++++++ 5 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 llvm/test/CodeGen/Hexagon/generic-cpu.ll (limited to 'llvm') 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 Features> : ProcessorModel; +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 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 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 X( + RegisterTarget 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 +} -- cgit v1.2.3