61 bool fp16SrcZerosHighBits(
unsigned Opc)
const;
79 std::pair<SDValue, SDValue> foldFrameIndex(
SDValue N)
const;
81 bool isInlineImmediate(
const SDNode *
N)
const;
83 bool isInlineImmediate(
const APInt &Imm)
const {
84 return Subtarget->getInstrInfo()->isInlineConstant(Imm);
87 bool isInlineImmediate(
const APFloat &Imm)
const {
91 bool isVGPRImm(
const SDNode *
N)
const;
92 bool isUniformLoad(
const SDNode *
N)
const;
93 bool isUniformBr(
const SDNode *
N)
const;
97 bool isUnneededShiftMask(
const SDNode *
N,
unsigned ShAmtBits)
const;
102 MachineSDNode *buildSMovImm64(SDLoc &
DL,
uint64_t Val, EVT VT)
const;
104 SDNode *packConstantV2I16(
const SDNode *
N, SelectionDAG &DAG)
const;
107 SDNode *glueCopyToM0(SDNode *
N,
SDValue Val)
const;
108 SDNode *glueCopyToM0LDSInit(SDNode *
N)
const;
110 const TargetRegisterClass *getOperandRegClass(SDNode *
N,
unsigned OpNo)
const;
114 bool isDSOffset2Legal(
SDValue Base,
unsigned Offset0,
unsigned Offset1,
115 unsigned Size)
const;
117 bool isFlatScratchBaseLegal(
SDValue Addr)
const;
118 bool isFlatScratchBaseLegalSV(
SDValue Addr)
const;
119 bool isFlatScratchBaseLegalSVImm(
SDValue Addr)
const;
120 bool isSOffsetLegalWithImmOffset(
SDValue *SOffset,
bool Imm32Only,
121 bool IsBuffer, int64_t ImmOffset = 0)
const;
135 bool SelectMUBUFScratchOffen(SDNode *Parent,
SDValue Addr,
SDValue &RSrc,
138 bool SelectMUBUFScratchOffset(SDNode *Parent,
SDValue Addr,
SDValue &SRsrc,
155 bool NeedIOffset =
true)
const;
168 bool SelectGlobalSAddrNoIOffset(SDNode *
N,
SDValue Addr,
SDValue &SAddr,
170 bool SelectGlobalSAddrNoIOffsetM0(SDNode *
N,
SDValue Addr,
SDValue &SAddr,
180 bool SelectSMRDOffset(SDNode *
N,
SDValue ByteOffsetNode,
SDValue *SOffset,
182 bool IsBuffer =
false,
bool HasSOffset =
false,
183 int64_t ImmOffset = 0,
184 bool *ScaleOffset =
nullptr)
const;
188 bool Imm32Only =
false,
bool IsBuffer =
false,
189 bool HasSOffset =
false, int64_t ImmOffset = 0,
190 bool *ScaleOffset =
nullptr)
const;
193 bool *ScaleOffset =
nullptr)
const;
196 bool SelectScaleOffset(SDNode *
N,
SDValue &
Offset,
bool IsSigned)
const;
210 bool SelectVOP3ModsImpl(
SDValue In,
SDValue &Src,
unsigned &SrcMods,
211 bool IsCanonicalizing =
true,
212 bool AllowAbs =
true)
const;
234 bool IsDOT =
false)
const;
253 bool SelectVOP3PMadMixModsImpl(
SDValue In,
SDValue &Src,
unsigned &Mods,
268 SDValue getMaterializedScalarImm32(int64_t Val,
const SDLoc &
DL)
const;
270 void SelectADD_SUB_I64(SDNode *
N);
271 void SelectAddcSubb(SDNode *
N);
272 void SelectUADDO_USUBO(SDNode *
N);
273 void SelectDIV_SCALE(SDNode *
N);
274 void SelectMAD_64_32(SDNode *
N);
275 void SelectMUL_LOHI(SDNode *
N);
276 void SelectFMA_W_CHAIN(SDNode *
N);
277 void SelectFMUL_W_CHAIN(SDNode *
N);
280 void SelectS_BFEFromShifts(SDNode *
N);
281 void SelectS_BFE(SDNode *
N);
282 bool isCBranchSCC(
const SDNode *
N)
const;
283 void SelectBRCOND(SDNode *
N);
284 void SelectFMAD_FMA(SDNode *
N);
285 void SelectFP_EXTEND(SDNode *
N);
286 void SelectDSAppendConsume(SDNode *
N,
unsigned IntrID);
287 void SelectDSBvhStackIntrinsic(SDNode *
N,
unsigned IntrID);
288 void SelectDS_GWS(SDNode *
N,
unsigned IntrID);
289 void SelectInterpP1F16(SDNode *
N);
290 void SelectINTRINSIC_W_CHAIN(SDNode *
N);
291 void SelectINTRINSIC_WO_CHAIN(SDNode *
N);
292 void SelectINTRINSIC_VOID(SDNode *
N);
293 void SelectWAVE_ADDRESS(SDNode *
N);
294 void SelectSTACKRESTORE(SDNode *
N);
298#include "AMDGPUGenDAGISel.inc"