1283625Sdim//===-- BPFSubtarget.h - Define Subtarget for the BPF -----------*- C++ -*-===// 2283625Sdim// 3283625Sdim// The LLVM Compiler Infrastructure 4283625Sdim// 5283625Sdim// This file is distributed under the University of Illinois Open Source 6283625Sdim// License. See LICENSE.TXT for details. 7283625Sdim// 8283625Sdim//===----------------------------------------------------------------------===// 9283625Sdim// 10283625Sdim// This file declares the BPF specific subclass of TargetSubtargetInfo. 11283625Sdim// 12283625Sdim//===----------------------------------------------------------------------===// 13283625Sdim 14283625Sdim#ifndef LLVM_LIB_TARGET_BPF_BPFSUBTARGET_H 15283625Sdim#define LLVM_LIB_TARGET_BPF_BPFSUBTARGET_H 16283625Sdim 17283625Sdim#include "BPFFrameLowering.h" 18283625Sdim#include "BPFISelLowering.h" 19283625Sdim#include "BPFInstrInfo.h" 20283625Sdim#include "llvm/Target/TargetSelectionDAGInfo.h" 21283625Sdim#include "llvm/IR/DataLayout.h" 22283625Sdim#include "llvm/Target/TargetMachine.h" 23283625Sdim#include "llvm/Target/TargetSubtargetInfo.h" 24283625Sdim 25283625Sdim#define GET_SUBTARGETINFO_HEADER 26283625Sdim#include "BPFGenSubtargetInfo.inc" 27283625Sdim 28283625Sdimnamespace llvm { 29283625Sdimclass StringRef; 30283625Sdim 31283625Sdimclass BPFSubtarget : public BPFGenSubtargetInfo { 32283625Sdim virtual void anchor(); 33283625Sdim BPFInstrInfo InstrInfo; 34283625Sdim BPFFrameLowering FrameLowering; 35283625Sdim BPFTargetLowering TLInfo; 36283625Sdim TargetSelectionDAGInfo TSInfo; 37283625Sdim 38283625Sdimpublic: 39283625Sdim // This constructor initializes the data members to match that 40283625Sdim // of the specified triple. 41284734Sdim BPFSubtarget(const Triple &TT, const std::string &CPU, const std::string &FS, 42284734Sdim const TargetMachine &TM); 43283625Sdim 44283625Sdim // ParseSubtargetFeatures - Parses features string setting specified 45283625Sdim // subtarget options. Definition of function is auto generated by tblgen. 46283625Sdim void ParseSubtargetFeatures(StringRef CPU, StringRef FS); 47283625Sdim 48283625Sdim const BPFInstrInfo *getInstrInfo() const override { return &InstrInfo; } 49283625Sdim const BPFFrameLowering *getFrameLowering() const override { 50283625Sdim return &FrameLowering; 51283625Sdim } 52283625Sdim const BPFTargetLowering *getTargetLowering() const override { 53283625Sdim return &TLInfo; 54283625Sdim } 55283625Sdim const TargetSelectionDAGInfo *getSelectionDAGInfo() const override { 56283625Sdim return &TSInfo; 57283625Sdim } 58283625Sdim const TargetRegisterInfo *getRegisterInfo() const override { 59283625Sdim return &InstrInfo.getRegisterInfo(); 60283625Sdim } 61283625Sdim}; 62285181Sdim} // End llvm namespace 63283625Sdim 64283625Sdim#endif 65