1*9880d681SAndroid Build Coastguard Worker //===-- BPFSubtarget.h - Define Subtarget for the BPF -----------*- C++ -*-===// 2*9880d681SAndroid Build Coastguard Worker // 3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker // 5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker // 8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker // 10*9880d681SAndroid Build Coastguard Worker // This file declares the BPF specific subclass of TargetSubtargetInfo. 11*9880d681SAndroid Build Coastguard Worker // 12*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_LIB_TARGET_BPF_BPFSUBTARGET_H 15*9880d681SAndroid Build Coastguard Worker #define LLVM_LIB_TARGET_BPF_BPFSUBTARGET_H 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker #include "BPFFrameLowering.h" 18*9880d681SAndroid Build Coastguard Worker #include "BPFISelLowering.h" 19*9880d681SAndroid Build Coastguard Worker #include "BPFInstrInfo.h" 20*9880d681SAndroid Build Coastguard Worker #include "llvm/CodeGen/SelectionDAGTargetInfo.h" 21*9880d681SAndroid Build Coastguard Worker #include "llvm/IR/DataLayout.h" 22*9880d681SAndroid Build Coastguard Worker #include "llvm/Target/TargetMachine.h" 23*9880d681SAndroid Build Coastguard Worker #include "llvm/Target/TargetSubtargetInfo.h" 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker #define GET_SUBTARGETINFO_HEADER 26*9880d681SAndroid Build Coastguard Worker #include "BPFGenSubtargetInfo.inc" 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker namespace llvm { 29*9880d681SAndroid Build Coastguard Worker class StringRef; 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker class BPFSubtarget : public BPFGenSubtargetInfo { 32*9880d681SAndroid Build Coastguard Worker virtual void anchor(); 33*9880d681SAndroid Build Coastguard Worker BPFInstrInfo InstrInfo; 34*9880d681SAndroid Build Coastguard Worker BPFFrameLowering FrameLowering; 35*9880d681SAndroid Build Coastguard Worker BPFTargetLowering TLInfo; 36*9880d681SAndroid Build Coastguard Worker SelectionDAGTargetInfo TSInfo; 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker public: 39*9880d681SAndroid Build Coastguard Worker // This constructor initializes the data members to match that 40*9880d681SAndroid Build Coastguard Worker // of the specified triple. 41*9880d681SAndroid Build Coastguard Worker BPFSubtarget(const Triple &TT, const std::string &CPU, const std::string &FS, 42*9880d681SAndroid Build Coastguard Worker const TargetMachine &TM); 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker // ParseSubtargetFeatures - Parses features string setting specified 45*9880d681SAndroid Build Coastguard Worker // subtarget options. Definition of function is auto generated by tblgen. 46*9880d681SAndroid Build Coastguard Worker void ParseSubtargetFeatures(StringRef CPU, StringRef FS); 47*9880d681SAndroid Build Coastguard Worker getInstrInfo()48*9880d681SAndroid Build Coastguard Worker const BPFInstrInfo *getInstrInfo() const override { return &InstrInfo; } getFrameLowering()49*9880d681SAndroid Build Coastguard Worker const BPFFrameLowering *getFrameLowering() const override { 50*9880d681SAndroid Build Coastguard Worker return &FrameLowering; 51*9880d681SAndroid Build Coastguard Worker } getTargetLowering()52*9880d681SAndroid Build Coastguard Worker const BPFTargetLowering *getTargetLowering() const override { 53*9880d681SAndroid Build Coastguard Worker return &TLInfo; 54*9880d681SAndroid Build Coastguard Worker } getSelectionDAGInfo()55*9880d681SAndroid Build Coastguard Worker const SelectionDAGTargetInfo *getSelectionDAGInfo() const override { 56*9880d681SAndroid Build Coastguard Worker return &TSInfo; 57*9880d681SAndroid Build Coastguard Worker } getRegisterInfo()58*9880d681SAndroid Build Coastguard Worker const TargetRegisterInfo *getRegisterInfo() const override { 59*9880d681SAndroid Build Coastguard Worker return &InstrInfo.getRegisterInfo(); 60*9880d681SAndroid Build Coastguard Worker } 61*9880d681SAndroid Build Coastguard Worker }; 62*9880d681SAndroid Build Coastguard Worker } // End llvm namespace 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Worker #endif 65