20#include "llvm/IR/IntrinsicsBPF.h"
23#define DEBUG_TYPE "bpf-gisel"
29#define GET_GLOBALISEL_PREDICATE_BITSET
30#include "BPFGenGlobalISel.inc"
31#undef GET_GLOBALISEL_PREDICATE_BITSET
50#define GET_GLOBALISEL_PREDICATES_DECL
51#include "BPFGenGlobalISel.inc"
52#undef GET_GLOBALISEL_PREDICATES_DECL
54#define GET_GLOBALISEL_TEMPORARIES_DECL
55#include "BPFGenGlobalISel.inc"
56#undef GET_GLOBALISEL_TEMPORARIES_DECL
61#define GET_GLOBALISEL_IMPL
62#include "BPFGenGlobalISel.inc"
63#undef GET_GLOBALISEL_IMPL
68 :
TII(*STI.getInstrInfo()),
TRI(*STI.getRegisterInfo()), RBI(RBI),
70#include
"BPFGenGlobalISel.inc"
73#include
"BPFGenGlobalISel.inc"
81 if (selectImpl(
I, *CoverageInfo))
91 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 &)