25#define DEBUG_TYPE "xtensa-isel"
40 EVT ValTy =
Addr.getValueType();
44 Base = CurDAG->getTargetFrameIndex(FIN->getIndex(), ValTy);
50 if (TM.isPositionIndependent()) {
52 "PIC relocations are not supported ",
54 CurDAG->getContext()->diagnose(Diag);
63 if (CurDAG->isBaseWithConstantOffset(
Addr)) {
72 dyn_cast<FrameIndexSDNode>(
Addr.getOperand(0)))
73 Base = CurDAG->getTargetFrameIndex(FIN->getIndex(), ValTy);
102#include "XtensaGenDAGISel.inc"
111 ID, std::make_unique<XtensaDAGToDAGISel>(TM, OptLevel)) {}
114 return "Xtensa DAG->DAG Pattern Instruction Selection";
119char XtensaDAGToDAGISelLegacy::ID = 0;
123 return new XtensaDAGToDAGISelLegacy(TM, OptLevel);
126void XtensaDAGToDAGISel::Select(
SDNode *
Node) {
130 if (
Node->isMachineOpcode()) {
amdgpu AMDGPU Register Bank Select
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
uint64_t getZExtValue() const
int64_t getSExtValue() const
Diagnostic information for unsupported feature in backend.
FunctionPass class - This class is used to implement most global optimizations.
virtual StringRef getPassName() const
getPassName - Return a nice clean name for a pass.
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.
SelectionDAGISel - This is the common base class used for SelectionDAG-based pattern-matching instruc...
StringRef - Represent a constant reference to a string, i.e.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
@ TargetGlobalAddress
TargetGlobalAddress - Like GlobalAddress, but the DAG does no folding or anything else with this node...
This is an optimization pass for GlobalISel generic memory operations.
FunctionPass * createXtensaISelDag(XtensaTargetMachine &TM, CodeGenOptLevel OptLevel)
CodeGenOptLevel
Code generation optimization level.
bool isValidAddrOffset(int Scale, int64_t OffsetVal)