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