BPFSubtarget.h revision 284734
150477Speter//===-- BPFSubtarget.h - Define Subtarget for the BPF -----------*- C++ -*-===// 240269Srnordier// 3211571Srpaulo// The LLVM Compiler Infrastructure 4211571Srpaulo// 5125537Sru// This file is distributed under the University of Illinois Open Source 640326Srnordier// License. See LICENSE.TXT for details. 780751Sjhb// 880751Sjhb//===----------------------------------------------------------------------===// 948919Srnordier// 10134382Syar// This file declares the BPF specific subclass of TargetSubtargetInfo. 1148919Srnordier// 1242480Srnordier//===----------------------------------------------------------------------===// 1342480Srnordier 1440541Srnordier#ifndef LLVM_LIB_TARGET_BPF_BPFSUBTARGET_H 1540541Srnordier#define LLVM_LIB_TARGET_BPF_BPFSUBTARGET_H 16104673Sgreen 1740269Srnordier#include "BPFFrameLowering.h" 18104683Sjhb#include "BPFISelLowering.h" 1940269Srnordier#include "BPFInstrInfo.h" 20125537Sru#include "llvm/Target/TargetSelectionDAGInfo.h" 21108000Simp#include "llvm/IR/DataLayout.h" 22125537Sru#include "llvm/Target/TargetMachine.h" 23125537Sru#include "llvm/Target/TargetSubtargetInfo.h" 24104635Sphk 25276479Sdim#define GET_SUBTARGETINFO_HEADER 2696327Sjhb#include "BPFGenSubtargetInfo.inc" 27220337Srdivacky 28221177Sjhbnamespace llvm { 29107879Sphkclass StringRef; 30134382Syar 31125932Sruclass BPFSubtarget : public BPFGenSubtargetInfo { 32125932Sru virtual void anchor(); 33125932Sru BPFInstrInfo InstrInfo; 3497860Sphk BPFFrameLowering FrameLowering; 3596306Sobrien BPFTargetLowering TLInfo; 3640269Srnordier TargetSelectionDAGInfo TSInfo; 3740269Srnordier 38169732Skanpublic: 39272249Snyan // This constructor initializes the data members to match that 4040269Srnordier // of the specified triple. 41276479Sdim BPFSubtarget(const Triple &TT, const std::string &CPU, const std::string &FS, 42276479Sdim const TargetMachine &TM); 43259913Sdim 44260334Sdim // ParseSubtargetFeatures - Parses features string setting specified 45279598Sdim // subtarget options. Definition of function is auto generated by tblgen. 46279598Sdim void ParseSubtargetFeatures(StringRef CPU, StringRef FS); 47279598Sdim 48259913Sdim const BPFInstrInfo *getInstrInfo() const override { return &InstrInfo; } 49276479Sdim const BPFFrameLowering *getFrameLowering() const override { 50265400Simp return &FrameLowering; 51260095Sdim } 5240269Srnordier const BPFTargetLowering *getTargetLowering() const override { 53125537Sru return &TLInfo; 54125537Sru } 5540269Srnordier const TargetSelectionDAGInfo *getSelectionDAGInfo() const override { 56125537Sru return &TSInfo; 57125537Sru } 58109886Sphk const TargetRegisterInfo *getRegisterInfo() const override { 59109886Sphk return &InstrInfo.getRegisterInfo(); 60109886Sphk } 61125537Sru}; 62125537Sru} // namespace llvm 6340269Srnordier 64280980Sdim#endif 6540269Srnordier