Path: blob/main/contrib/llvm-project/llvm/lib/Target/MSP430/MSP430Subtarget.cpp
35269 views
//===-- MSP430Subtarget.cpp - MSP430 Subtarget Information ----------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7//8// This file implements the MSP430 specific subclass of TargetSubtargetInfo.9//10//===----------------------------------------------------------------------===//1112#include "MSP430Subtarget.h"13#include "MSP430.h"14#include "llvm/MC/TargetRegistry.h"1516using namespace llvm;1718#define DEBUG_TYPE "msp430-subtarget"1920static cl::opt<MSP430Subtarget::HWMultEnum>21HWMultModeOption("mhwmult", cl::Hidden,22cl::desc("Hardware multiplier use mode for MSP430"),23cl::init(MSP430Subtarget::NoHWMult),24cl::values(25clEnumValN(MSP430Subtarget::NoHWMult, "none",26"Do not use hardware multiplier"),27clEnumValN(MSP430Subtarget::HWMult16, "16bit",28"Use 16-bit hardware multiplier"),29clEnumValN(MSP430Subtarget::HWMult32, "32bit",30"Use 32-bit hardware multiplier"),31clEnumValN(MSP430Subtarget::HWMultF5, "f5series",32"Use F5 series hardware multiplier")));3334#define GET_SUBTARGETINFO_TARGET_DESC35#define GET_SUBTARGETINFO_CTOR36#include "MSP430GenSubtargetInfo.inc"3738void MSP430Subtarget::anchor() { }3940MSP430Subtarget &41MSP430Subtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS) {42ExtendedInsts = false;43HWMultMode = NoHWMult;4445StringRef CPUName = CPU;46if (CPUName.empty())47CPUName = "msp430";4849ParseSubtargetFeatures(CPUName, /*TuneCPU*/ CPUName, FS);5051if (HWMultModeOption != NoHWMult)52HWMultMode = HWMultModeOption;5354return *this;55}5657MSP430Subtarget::MSP430Subtarget(const Triple &TT, const std::string &CPU,58const std::string &FS, const TargetMachine &TM)59: MSP430GenSubtargetInfo(TT, CPU, /*TuneCPU*/ CPU, FS),60InstrInfo(initializeSubtargetDependencies(CPU, FS)), TLInfo(TM, *this),61FrameLowering(*this) {}626364