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 #define DEBUG_TYPE "lanai-subtarget" 16 17 #define GET_SUBTARGETINFO_TARGET_DESC 18 #define GET_SUBTARGETINFO_CTOR 19 #include "LanaiGenSubtargetInfo.inc" 20 21 using namespace llvm; 22 23 void LanaiSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) { 24 std::string CPUName = std::string(CPU); 25 if (CPUName.empty()) 26 CPUName = "generic"; 27 28 ParseSubtargetFeatures(CPUName, /*TuneCPU*/ CPUName, FS); 29 } 30 31 LanaiSubtarget &LanaiSubtarget::initializeSubtargetDependencies(StringRef CPU, 32 StringRef FS) { 33 initSubtargetFeatures(CPU, FS); 34 return *this; 35 } 36 37 LanaiSubtarget::LanaiSubtarget(const Triple &TargetTriple, StringRef Cpu, 38 StringRef FeatureString, const TargetMachine &TM, 39 const TargetOptions & /*Options*/, 40 CodeModel::Model /*CodeModel*/, 41 CodeGenOptLevel /*OptLevel*/) 42 : LanaiGenSubtargetInfo(TargetTriple, Cpu, /*TuneCPU*/ Cpu, FeatureString), 43 FrameLowering(initializeSubtargetDependencies(Cpu, FeatureString)), 44 TLInfo(TM, *this) {} 45