diff options
| author | Vadzim Dambrouski <pftbest@gmail.com> | 2017-05-23 21:49:42 +0000 |
|---|---|---|
| committer | Vadzim Dambrouski <pftbest@gmail.com> | 2017-05-23 21:49:42 +0000 |
| commit | 49dd6e68c21c966d4fb81fb8248ee5a576896843 (patch) | |
| tree | 64e9e6c0f5aee33b59fb86f85e337ed800bfc4e6 /llvm/lib/Target/MSP430/MSP430Subtarget.cpp | |
| parent | 6b5eceac2e1cb21826aec1d800f8c890a54b4d6b (diff) | |
| download | bcm5719-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.cpp | 27 |
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; } |

