14#ifndef LLVM_LIB_TARGET_BPF_BPFISELLOWERING_H
15#define LLVM_LIB_TARGET_BPF_BPFISELLOWERING_H
52 std::pair<unsigned, const TargetRegisterClass *>
65 EVT VT)
const override;
84 template <
class NodeTy>
95 static const size_t MaxArgs;
118 return Op.size() >= 8 ? MVT::i64 : MVT::i32;
121 bool isIntDivCheap(EVT VT, AttributeList Attr)
const override {
return true; }
123 bool shouldConvertConstantLoadToIntImm(
const APInt &Imm,
124 Type *Ty)
const override {
137 EVT NewVT)
const override {
141 bool isLegalAddressingMode(
const DataLayout &
DL,
const AddrMode &AM,
142 Type *Ty,
unsigned AS,
143 Instruction *
I =
nullptr)
const override;
148 bool isTruncateFree(Type *Ty1, Type *Ty2)
const override;
149 bool isTruncateFree(EVT VT1, EVT VT2)
const override;
152 bool isZExtFree(Type *Ty1, Type *Ty2)
const override;
153 bool isZExtFree(EVT VT1, EVT VT2)
const override;
154 bool isZExtFree(SDValue Val, EVT VT2)
const override;
156 unsigned EmitSubregExt(MachineInstr &
MI, MachineBasicBlock *BB,
unsigned Reg,
159 MachineBasicBlock * EmitInstrWithCustomInserterMemcpy(MachineInstr &
MI,
160 MachineBasicBlock *BB)
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
Function Alias Analysis Results
static bool isSigned(unsigned int Opcode)
unsigned const TargetRegisterInfo * TRI
This file describes how to lower LLVM code to machine code.
BPFTargetLowering::ConstraintType getConstraintType(StringRef Constraint) const override
Given a constraint, return the type of constraint it is for this target.
const char * getTargetNodeName(unsigned Opcode) const override
This method returns the name of a target specific DAG node.
bool getHasJmpExt() const
bool isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const override
Return true if folding a constant offset with the given GlobalAddress is legal.
EVT getSetCCResultType(const DataLayout &DL, LLVMContext &Context, EVT VT) const override
Return the ValueType of the result of SETCC operations.
SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const override
This callback is invoked for operations that are unsupported by the target, which are registered to u...
MachineBasicBlock * EmitInstrWithCustomInserter(MachineInstr &MI, MachineBasicBlock *BB) const override
This method should be implemented by targets that mark instructions with the 'usesCustomInserter' fla...
MVT getScalarShiftAmountTy(const DataLayout &, EVT) const override
Return the type to use for a scalar shift opcode, given the shifted amount type.
std::pair< unsigned, const TargetRegisterClass * > getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI, StringRef Constraint, MVT VT) const override
Given a physical register constraint (e.g.
This class represents an Operation in the Expression.
A parsed version of the target data layout string in and methods for querying it.
This is an important class for using LLVM in a threaded context.
Representation of each machine instruction.
Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation funct...
Represents one node in the SelectionDAG.
Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation.
This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representa...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
StringRef - Represent a constant reference to a string, i.e.
This class defines information used to lower LLVM code to legal SelectionDAG operators that the targe...
Primary interface to the complete machine description for the target machine.
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
@ BUILTIN_OP_END
BUILTIN_OP_END - This must be the last enum value in this list.
LoadExtType
LoadExtType enum - This enum defines the three variants of LOADEXT (load with extension).
This is an optimization pass for GlobalISel generic memory operations.
This structure contains all information that is necessary for lowering calls.