13#ifndef LLVM_LIB_TARGET_MIPS_MIPSISELDAGTODAG_H
14#define LLVM_LIB_TARGET_MIPS_MIPSISELDAGTODAG_H
49 #include "MipsGenDAGISel.inc"
94 unsigned MinSizeInBits)
const;
96 unsigned ImmBitSize)
const;
98 template <
unsigned Bits>
100 return selectVSplatCommon(
N, Imm,
false, Bits);
103 template <
unsigned Bits>
105 return selectVSplatCommon(
N, Imm,
true, Bits);
108 virtual bool selectVSplatUimmPow2(SDValue
N, SDValue &Imm)
const;
111 virtual bool selectVSplatUimmInvPow2(SDValue
N, SDValue &Imm)
const;
114 virtual bool selectVSplatMaskL(SDValue
N, SDValue &Imm)
const;
117 virtual bool selectVSplatMaskR(SDValue
N, SDValue &Imm)
const;
120 virtual bool selectVSplatImmEq1(SDValue
N)
const;
125 bool selectVecAddAsVecSubIfProfitable(SDNode *
Node);
127 void Select(SDNode *
N)
override;
129 virtual bool trySelect(SDNode *
Node) = 0;
132 inline SDValue getImm(
const SDNode *
Node,
uint64_t Imm) {
136 inline SDValue getSignedImm(
const SDNode *
Node, int64_t Imm) {
138 Node->getValueType(0));
141 virtual void processFunctionAfterISel(MachineFunction &
MF) = 0;
143 bool SelectInlineAsmMemoryOperand(
const SDValue &
Op,
145 std::vector<SDValue> &OutOps)
override;
146 bool isUnneededShiftMask(SDNode *
N,
unsigned ShAmtBits)
const;
AMDGPU Register Bank Select
Class for arbitrary precision integers.
Represent the analysis usage information of a pass.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
bool runOnMachineFunction(MachineFunction &MF) override
MipsDAGToDAGISel()=delete
const MipsSubtarget * Subtarget
Keep a pointer to the MipsSubtarget around so that we can make the right decision when generating cod...
SDNode * getGlobalBaseReg()
getGlobalBaseReg - Output the instructions required to put the GOT address into a register.
MipsDAGToDAGISel(MipsTargetMachine &TM, CodeGenOptLevel OL)
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...
SDValue getSignedTargetConstant(int64_t Val, const SDLoc &DL, EVT VT, bool isOpaque=false)
SDValue getTargetConstant(uint64_t Val, const SDLoc &DL, EVT VT, bool isOpaque=false)
This is an optimization pass for GlobalISel generic memory operations.
CodeGenOptLevel
Code generation optimization level.
DWARFExpression::Operation Op