Path: blob/main/contrib/llvm-project/llvm/lib/Target/Lanai/LanaiSubtarget.h
35271 views
//=====-- LanaiSubtarget.h - Define Subtarget for the Lanai -----*- C++ -*--==//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 declares the Lanai specific subclass of TargetSubtarget.9//10//===----------------------------------------------------------------------===//1112#ifndef LLVM_LIB_TARGET_LANAI_LANAISUBTARGET_H13#define LLVM_LIB_TARGET_LANAI_LANAISUBTARGET_H1415#include "LanaiFrameLowering.h"16#include "LanaiISelLowering.h"17#include "LanaiInstrInfo.h"18#include "LanaiSelectionDAGInfo.h"19#include "llvm/CodeGen/TargetSubtargetInfo.h"20#include "llvm/IR/DataLayout.h"21#include "llvm/Target/TargetMachine.h"2223#define GET_SUBTARGETINFO_HEADER24#include "LanaiGenSubtargetInfo.inc"2526namespace llvm {2728class LanaiSubtarget : public LanaiGenSubtargetInfo {29public:30// This constructor initializes the data members to match that31// of the specified triple.32LanaiSubtarget(const Triple &TargetTriple, StringRef Cpu,33StringRef FeatureString, const TargetMachine &TM,34const TargetOptions &Options, CodeModel::Model CodeModel,35CodeGenOptLevel OptLevel);3637// ParseSubtargetFeatures - Parses features string setting specified38// subtarget options. Definition of function is auto generated by tblgen.39void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS);4041LanaiSubtarget &initializeSubtargetDependencies(StringRef CPU, StringRef FS);4243void initSubtargetFeatures(StringRef CPU, StringRef FS);4445bool enableMachineScheduler() const override { return true; }4647const LanaiInstrInfo *getInstrInfo() const override { return &InstrInfo; }4849const TargetFrameLowering *getFrameLowering() const override {50return &FrameLowering;51}5253const LanaiRegisterInfo *getRegisterInfo() const override {54return &InstrInfo.getRegisterInfo();55}5657const LanaiTargetLowering *getTargetLowering() const override {58return &TLInfo;59}6061const LanaiSelectionDAGInfo *getSelectionDAGInfo() const override {62return &TSInfo;63}6465private:66LanaiFrameLowering FrameLowering;67LanaiInstrInfo InstrInfo;68LanaiTargetLowering TLInfo;69LanaiSelectionDAGInfo TSInfo;70};71} // namespace llvm7273#endif // LLVM_LIB_TARGET_LANAI_LANAISUBTARGET_H747576