61 bool fp16SrcZerosHighBits(
unsigned Opc)
const;
81 std::pair<SDValue, SDValue> foldFrameIndex(
SDValue N)
const;
83 bool isInlineImmediate(
const SDNode *
N)
const;
85 bool isInlineImmediate(
const APInt &
Imm)
const {
86 return Subtarget->getInstrInfo()->isInlineConstant(
Imm);
89 bool isInlineImmediate(
const APFloat &
Imm)
const {
93 bool isVGPRImm(
const SDNode *
N)
const;
94 bool isUniformBr(
const SDNode *
N)
const;
96 MachineSDNode *buildRegSequence16(SmallVectorImpl<SDValue> &Elts,
97 const SDLoc &
DL)
const;
98 MachineSDNode *buildRegSequence32(SmallVectorImpl<SDValue> &Elts,
99 const SDLoc &
DL)
const;
101 const SDLoc &
DL,
unsigned ElementSize)
const;
104 SmallVectorImpl<SDValue> &Elts,
SDValue &Src,
105 const SDLoc &
DL,
unsigned ElementSize)
const;
109 bool isUnneededShiftMask(
const SDNode *
N,
unsigned ShAmtBits)
const;
114 MachineSDNode *buildSMovImm64(SDLoc &
DL,
uint64_t Val, EVT VT)
const;
116 SDNode *packConstantV2I16(
const SDNode *
N, SelectionDAG &DAG)
const;
119 SDNode *glueCopyToM0(SDNode *
N,
SDValue Val)
const;
120 SDNode *glueCopyToM0LDSInit(SDNode *
N)
const;
126 bool isDSOffset2Legal(
SDValue Base,
unsigned Offset0,
unsigned Offset1,
127 unsigned Size)
const;
129 bool isFlatScratchBaseLegal(
SDValue Addr)
const;
130 bool isFlatScratchBaseLegalSV(
SDValue Addr)
const;
131 bool isFlatScratchBaseLegalSVImm(
SDValue Addr)
const;
132 bool isSOffsetLegalWithImmOffset(
SDValue *SOffset,
bool Imm32Only,
133 bool IsBuffer, int64_t ImmOffset = 0)
const;
147 bool SelectMUBUFScratchOffen(SDNode *Parent,
SDValue Addr,
SDValue &RSrc,
150 bool SelectMUBUFScratchOffset(SDNode *Parent,
SDValue Addr,
SDValue &SRsrc,
168 bool NeedIOffset =
true)
const;
181 bool SelectGlobalSAddrNoIOffset(SDNode *
N,
SDValue Addr,
SDValue &SAddr,
183 bool SelectGlobalSAddrNoIOffsetM0(SDNode *
N,
SDValue Addr,
SDValue &SAddr,
193 bool SelectSMRDOffset(SDNode *
N,
SDValue ByteOffsetNode,
SDValue *SOffset,
195 bool IsBuffer =
false,
bool HasSOffset =
false,
196 int64_t ImmOffset = 0,
197 bool *ScaleOffset =
nullptr)
const;
201 bool Imm32Only =
false,
bool IsBuffer =
false,
202 bool HasSOffset =
false, int64_t ImmOffset = 0,
203 bool *ScaleOffset =
nullptr)
const;
206 bool *ScaleOffset =
nullptr)
const;
210 bool IsSMEM =
false)
const;
222 bool SelectVOP3ModsImpl(
SDValue In,
SDValue &Src,
unsigned &SrcMods,
223 bool IsCanonicalizing =
true,
224 bool AllowAbs =
true)
const;
244 bool IsDOT =
false,
bool NoOpSel0 =
false)
const;
270 bool SelectVOP3PMadMixModsImpl(
SDValue In,
SDValue &Src,
unsigned &Mods,
293 SDValue getMaterializedScalarImm32(int64_t Val,
const SDLoc &
DL)
const;
295 void SelectAddcSubb(SDNode *
N);
296 void SelectAddcSubbI64(SDNode *
N);
297 void SelectUADDO_USUBO(SDNode *
N);
298 void SelectDIV_SCALE(SDNode *
N);
299 void SelectMAD_64_32(SDNode *
N);
300 void SelectMUL_LOHI(SDNode *
N);
301 void SelectFMA_W_CHAIN(SDNode *
N);
302 void SelectFMUL_W_CHAIN(SDNode *
N);
305 void SelectS_BFEFromShifts(SDNode *
N);
306 void SelectS_BFE(SDNode *
N);
307 bool isCBranchSCC(
const SDNode *
N)
const;
308 void SelectBRCOND(SDNode *
N);
309 void SelectFP_EXTEND(SDNode *
N);
310 void SelectDSAppendConsume(SDNode *
N,
unsigned IntrID);
311 void SelectDSBvhStackIntrinsic(SDNode *
N,
unsigned IntrID);
312 void SelectTensorLoadStore(SDNode *
N,
unsigned IntrID);
313 void SelectDS_GWS(SDNode *
N,
unsigned IntrID);
314 void SelectInterpP1F16(SDNode *
N);
315 void SelectINTRINSIC_W_CHAIN(SDNode *
N);
316 void SelectINTRINSIC_WO_CHAIN(SDNode *
N);
317 void SelectINTRINSIC_VOID(SDNode *
N);
318 void SelectWAVE_ADDRESS(SDNode *
N);
319 void SelectSTACKRESTORE(SDNode *
N);
320 void SelectWRITE_REGISTER(SDNode *
N);
324#include "AMDGPUGenDAGISel.inc"