diff options
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;  } | 

