brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 233c89e Raw
75 lines · c
1//=====-- LanaiSubtarget.h - Define Subtarget for the Lanai -----*- 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-exception6//7//===----------------------------------------------------------------------===//8//9// This file declares the Lanai specific subclass of TargetSubtarget.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_LANAI_LANAISUBTARGET_H14#define LLVM_LIB_TARGET_LANAI_LANAISUBTARGET_H15 16#include "LanaiFrameLowering.h"17#include "LanaiISelLowering.h"18#include "LanaiInstrInfo.h"19#include "LanaiSelectionDAGInfo.h"20#include "llvm/CodeGen/TargetSubtargetInfo.h"21#include "llvm/IR/DataLayout.h"22#include "llvm/Target/TargetMachine.h"23 24#define GET_SUBTARGETINFO_HEADER25#include "LanaiGenSubtargetInfo.inc"26 27namespace llvm {28 29class LanaiSubtarget : public LanaiGenSubtargetInfo {30public:31  // This constructor initializes the data members to match that32  // of the specified triple.33  LanaiSubtarget(const Triple &TargetTriple, StringRef Cpu,34                 StringRef FeatureString, const TargetMachine &TM,35                 const TargetOptions &Options, CodeModel::Model CodeModel,36                 CodeGenOptLevel OptLevel);37 38  // ParseSubtargetFeatures - Parses features string setting specified39  // subtarget options.  Definition of function is auto generated by tblgen.40  void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS);41 42  LanaiSubtarget &initializeSubtargetDependencies(StringRef CPU, StringRef FS);43 44  void initSubtargetFeatures(StringRef CPU, StringRef FS);45 46  bool enableMachineScheduler() const override { return true; }47 48  const LanaiInstrInfo *getInstrInfo() const override { return &InstrInfo; }49 50  const TargetFrameLowering *getFrameLowering() const override {51    return &FrameLowering;52  }53 54  const LanaiRegisterInfo *getRegisterInfo() const override {55    return &InstrInfo.getRegisterInfo();56  }57 58  const LanaiTargetLowering *getTargetLowering() const override {59    return &TLInfo;60  }61 62  const LanaiSelectionDAGInfo *getSelectionDAGInfo() const override {63    return &TSInfo;64  }65 66private:67  LanaiInstrInfo InstrInfo;68  LanaiFrameLowering FrameLowering;69  LanaiTargetLowering TLInfo;70  LanaiSelectionDAGInfo TSInfo;71};72} // namespace llvm73 74#endif // LLVM_LIB_TARGET_LANAI_LANAISUBTARGET_H75