1 //===-- MSP430Subtarget.cpp - MSP430 Subtarget Information ----------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file implements the MSP430 specific subclass of TargetSubtargetInfo. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #include "MSP430Subtarget.h" 15 #include "MSP430.h" 16 #include "llvm/Support/TargetRegistry.h" 17 18 using namespace llvm; 19 20 #define DEBUG_TYPE "msp430-subtarget" 21 22 static cl::opt<MSP430Subtarget::HWMultEnum> 23 HWMultModeOption("mhwmult", cl::Hidden, 24 cl::desc("Hardware multiplier use mode for MSP430"), 25 cl::init(MSP430Subtarget::NoHWMult), 26 cl::values( 27 clEnumValN(MSP430Subtarget::NoHWMult, "none", 28 "Do not use hardware multiplier"), 29 clEnumValN(MSP430Subtarget::HWMult16, "16bit", 30 "Use 16-bit hardware multiplier"), 31 clEnumValN(MSP430Subtarget::HWMult32, "32bit", 32 "Use 32-bit hardware multiplier"), 33 clEnumValN(MSP430Subtarget::HWMultF5, "f5series", 34 "Use F5 series hardware multiplier"))); 35 36 #define GET_SUBTARGETINFO_TARGET_DESC 37 #define GET_SUBTARGETINFO_CTOR 38 #include "MSP430GenSubtargetInfo.inc" 39 40 void MSP430Subtarget::anchor() { } 41 42 MSP430Subtarget & 43 MSP430Subtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS) { 44 ExtendedInsts = false; 45 HWMultMode = NoHWMult; 46 47 std::string CPUName = CPU; 48 if (CPUName.empty()) 49 CPUName = "msp430"; 50 51 ParseSubtargetFeatures(CPUName, FS); 52 53 if (HWMultModeOption != NoHWMult) 54 HWMultMode = HWMultModeOption; 55 56 return *this; 57 } 58 59 MSP430Subtarget::MSP430Subtarget(const Triple &TT, const std::string &CPU, 60 const std::string &FS, const TargetMachine &TM) 61 : MSP430GenSubtargetInfo(TT, CPU, FS), FrameLowering(), 62 InstrInfo(initializeSubtargetDependencies(CPU, FS)), TLInfo(TM, *this) {} 63