19#include "llvm/IR/IntrinsicsBPF.h"
21#define DEBUG_TYPE "bpf-gisel"
27#define GET_GLOBALISEL_PREDICATE_BITSET
28#include "BPFGenGlobalISel.inc"
29#undef GET_GLOBALISEL_PREDICATE_BITSET
48#define GET_GLOBALISEL_PREDICATES_DECL
49#include "BPFGenGlobalISel.inc"
50#undef GET_GLOBALISEL_PREDICATES_DECL
52#define GET_GLOBALISEL_TEMPORARIES_DECL
53#include "BPFGenGlobalISel.inc"
54#undef GET_GLOBALISEL_TEMPORARIES_DECL
59#define GET_GLOBALISEL_IMPL
60#include "BPFGenGlobalISel.inc"
61#undef GET_GLOBALISEL_IMPL
66 :
TII(*STI.getInstrInfo()),
TRI(*STI.getRegisterInfo()), RBI(RBI),
68#include
"BPFGenGlobalISel.inc"
71#include
"BPFGenGlobalISel.inc"
79 if (selectImpl(
I, *CoverageInfo))
89 return new BPFInstructionSelector(TM, Subtarget, RBI);
#define GET_GLOBALISEL_PREDICATES_INIT
#define GET_GLOBALISEL_TEMPORARIES_INIT
This file declares the targeting of the RegisterBankInfo class for BPF.
const HexagonInstrInfo * TII
This file declares the MachineIRBuilder class.
unsigned const TargetRegisterInfo * TRI
static StringRef getName(Value *V)
virtual bool select(MachineInstr &I)=0
Select the (possibly generic) instruction I to only use target-specific opcodes.
Representation of each machine instruction.
This is an optimization pass for GlobalISel generic memory operations.
bool isPreISelGenericOpcode(unsigned Opcode)
Check whether the given Opcode is a generic opcode that is not supposed to appear after ISel.
InstructionSelector * createBPFInstructionSelector(const BPFTargetMachine &, const BPFSubtarget &, const BPFRegisterBankInfo &)