summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/MSP430/MSP430Subtarget.cpp
diff options
context:
space:
mode:
authorVadzim Dambrouski <pftbest@gmail.com>2017-05-23 21:49:42 +0000
committerVadzim Dambrouski <pftbest@gmail.com>2017-05-23 21:49:42 +0000
commit49dd6e68c21c966d4fb81fb8248ee5a576896843 (patch)
tree64e9e6c0f5aee33b59fb86f85e337ed800bfc4e6 /llvm/lib/Target/MSP430/MSP430Subtarget.cpp
parent6b5eceac2e1cb21826aec1d800f8c890a54b4d6b (diff)
downloadbcm5719-llvm-49dd6e68c21c966d4fb81fb8248ee5a576896843.tar.gz
bcm5719-llvm-49dd6e68c21c966d4fb81fb8248ee5a576896843.zip
[MSP430] Add subtarget features for hardware multiplier.
Also add more processors to make -mcpu option behave similar to gcc. Differential Revision: https://reviews.llvm.org/D33335 llvm-svn: 303695
Diffstat (limited to 'llvm/lib/Target/MSP430/MSP430Subtarget.cpp')
-rw-r--r--llvm/lib/Target/MSP430/MSP430Subtarget.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/llvm/lib/Target/MSP430/MSP430Subtarget.cpp b/llvm/lib/Target/MSP430/MSP430Subtarget.cpp
index 6216348e4d7..776a9dcb11d 100644
--- a/llvm/lib/Target/MSP430/MSP430Subtarget.cpp
+++ b/llvm/lib/Target/MSP430/MSP430Subtarget.cpp
@@ -19,6 +19,20 @@ using namespace llvm;
#define DEBUG_TYPE "msp430-subtarget"
+static cl::opt<MSP430Subtarget::HWMultEnum>
+HWMultModeOption("mhwmult", cl::Hidden,
+ cl::desc("Hardware multiplier use mode for MSP430"),
+ cl::init(MSP430Subtarget::NoHWMult),
+ cl::values(
+ clEnumValN(MSP430Subtarget::NoHWMult, "none",
+ "Do not use hardware multiplier"),
+ clEnumValN(MSP430Subtarget::HWMult16, "16bit",
+ "Use 16-bit hardware multiplier"),
+ clEnumValN(MSP430Subtarget::HWMult32, "32bit",
+ "Use 32-bit hardware multiplier"),
+ clEnumValN(MSP430Subtarget::HWMultF5, "f5series",
+ "Use F5 series hardware multiplier")));
+
#define GET_SUBTARGETINFO_TARGET_DESC
#define GET_SUBTARGETINFO_CTOR
#include "MSP430GenSubtargetInfo.inc"
@@ -27,7 +41,18 @@ void MSP430Subtarget::anchor() { }
MSP430Subtarget &
MSP430Subtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS) {
- ParseSubtargetFeatures("generic", FS);
+ ExtendedInsts = false;
+ HWMultMode = NoHWMult;
+
+ std::string CPUName = CPU;
+ if (CPUName.empty())
+ CPUName = "msp430";
+
+ ParseSubtargetFeatures(CPUName, FS);
+
+ if (HWMultModeOption != NoHWMult)
+ HWMultMode = HWMultModeOption;
+
return *this;
}
OpenPOWER on IntegriCloud