diff options
Diffstat (limited to 'llvm/lib/Target/BPF/BPFSubtarget.cpp')
| -rw-r--r-- | llvm/lib/Target/BPF/BPFSubtarget.cpp | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/llvm/lib/Target/BPF/BPFSubtarget.cpp b/llvm/lib/Target/BPF/BPFSubtarget.cpp index ce02c831828e..9a8e42f32371 100644 --- a/llvm/lib/Target/BPF/BPFSubtarget.cpp +++ b/llvm/lib/Target/BPF/BPFSubtarget.cpp @@ -12,6 +12,10 @@ #include "BPFSubtarget.h" #include "BPF.h" +#include "BPFTargetMachine.h" +#include "GISel/BPFCallLowering.h" +#include "GISel/BPFLegalizerInfo.h" +#include "GISel/BPFRegisterBankInfo.h" #include "llvm/MC/TargetRegistry.h" #include "llvm/TargetParser/Host.h" @@ -93,4 +97,30 @@ BPFSubtarget::BPFSubtarget(const Triple &TT, const std::string &CPU, const std::string &FS, const TargetMachine &TM) : BPFGenSubtargetInfo(TT, CPU, /*TuneCPU*/ CPU, FS), FrameLowering(initializeSubtargetDependencies(CPU, FS)), - TLInfo(TM, *this) {} + TLInfo(TM, *this) { + IsLittleEndian = TT.isLittleEndian(); + + CallLoweringInfo.reset(new BPFCallLowering(*getTargetLowering())); + Legalizer.reset(new BPFLegalizerInfo(*this)); + auto *RBI = new BPFRegisterBankInfo(*getRegisterInfo()); + RegBankInfo.reset(RBI); + + InstSelector.reset(createBPFInstructionSelector( + *static_cast<const BPFTargetMachine *>(&TM), *this, *RBI)); +} + +const CallLowering *BPFSubtarget::getCallLowering() const { + return CallLoweringInfo.get(); +} + +InstructionSelector *BPFSubtarget::getInstructionSelector() const { + return InstSelector.get(); +} + +const LegalizerInfo *BPFSubtarget::getLegalizerInfo() const { + return Legalizer.get(); +} + +const RegisterBankInfo *BPFSubtarget::getRegBankInfo() const { + return RegBankInfo.get(); +} |
