1//===- LanaiSubtarget.cpp - Lanai Subtarget Information -----------*- C++ -*-=// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This file implements the Lanai specific subclass of TargetSubtarget. 10// 11//===----------------------------------------------------------------------===// 12 13#include "LanaiSubtarget.h" 14 15#include "Lanai.h" 16 17#define DEBUG_TYPE "lanai-subtarget" 18 19#define GET_SUBTARGETINFO_TARGET_DESC 20#define GET_SUBTARGETINFO_CTOR 21#include "LanaiGenSubtargetInfo.inc" 22 23using namespace llvm; 24 25void LanaiSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) { 26 std::string CPUName = std::string(CPU); 27 if (CPUName.empty()) 28 CPUName = "generic"; 29 30 ParseSubtargetFeatures(CPUName, /*TuneCPU*/ CPUName, FS); 31} 32 33LanaiSubtarget &LanaiSubtarget::initializeSubtargetDependencies(StringRef CPU, 34 StringRef FS) { 35 initSubtargetFeatures(CPU, FS); 36 return *this; 37} 38 39LanaiSubtarget::LanaiSubtarget(const Triple &TargetTriple, StringRef Cpu, 40 StringRef FeatureString, const TargetMachine &TM, 41 const TargetOptions & /*Options*/, 42 CodeModel::Model /*CodeModel*/, 43 CodeGenOptLevel /*OptLevel*/) 44 : LanaiGenSubtargetInfo(TargetTriple, Cpu, /*TuneCPU*/ Cpu, FeatureString), 45 FrameLowering(initializeSubtargetDependencies(Cpu, FeatureString)), 46 TLInfo(TM, *this) {} 47