86 unsigned SubIdx)
const;
88 bool constrainCopyLikeIntrin(
MachineInstr &
MI,
unsigned NewOpc)
const;
126 bool selectDSAppendConsume(
MachineInstr &
MI,
bool IsAppend)
const;
132 bool selectG_INTRINSIC_W_SIDE_EFFECTS(
MachineInstr &
I)
const;
163 std::pair<Register, unsigned> selectVOP3ModsImpl(
Register Src,
164 bool IsCanonicalizing =
true,
165 bool AllowAbs =
true,
166 bool OpSel =
false)
const;
167 std::pair<Register, unsigned> selectVOP3PModsF32Impl(
Register Src)
const;
171 bool ForceVGPR =
false)
const;
194 std::pair<Register, unsigned>
196 bool IsDOT =
false)
const;
198 selectVOP3PRetHelper(
MachineOperand &Root,
bool IsDOT =
false)
const;
239 bool IsSigned)
const;
241 int64_t *
Offset,
bool *ScaleOffset)
const;
251 std::pair<Register, int>
264 bool NeedIOffset =
true)
const;
291 bool isDSOffset2Legal(
Register Base, int64_t Offset0, int64_t Offset1,
292 unsigned Size)
const;
293 bool isFlatScratchBaseLegal(
Register Addr)
const;
294 bool isFlatScratchBaseLegalSV(
Register Addr)
const;
295 bool isFlatScratchBaseLegalSVImm(
Register Addr)
const;
297 std::pair<Register, unsigned>
308 std::pair<Register, unsigned> selectDSReadWrite2Impl(
MachineOperand &Root,
309 unsigned size)
const;
313 std::tuple<Register, int64_t, bool>
314 getPtrBaseWithConstantOffset(
Register Root,
320 struct MUBUFAddressData {
325 bool shouldUseAddr64(MUBUFAddressData AddrData)
const;
327 void splitIllegalMUBUFOffset(MachineIRBuilder &
B,
328 Register &SOffset, int64_t &ImmOffset)
const;
330 MUBUFAddressData parseMUBUFAddress(
Register Src)
const;
332 bool selectMUBUFAddr64Impl(MachineOperand &Root,
Register &VAddr,
336 bool selectMUBUFOffsetImpl(MachineOperand &Root,
Register &RSrcReg,
340 selectBUFSOffset(MachineOperand &Root)
const;
343 selectMUBUFAddr64(MachineOperand &Root)
const;
346 selectMUBUFOffset(MachineOperand &Root)
const;
352 std::pair<Register, unsigned> selectVOP3PMadMixModsImpl(MachineOperand &Root,
353 bool &Matched)
const;
357 void renderTruncImm32(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
358 int OpIdx = -1)
const;
360 void renderTruncTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
362 void renderZextBoolTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
365 void renderOpSelTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
368 void renderSrcAndDstSelToOpSelXForm_0_0(MachineInstrBuilder &MIB,
369 const MachineInstr &
MI,
372 void renderSrcAndDstSelToOpSelXForm_0_1(MachineInstrBuilder &MIB,
373 const MachineInstr &
MI,
376 void renderSrcAndDstSelToOpSelXForm_1_0(MachineInstrBuilder &MIB,
377 const MachineInstr &
MI,
380 void renderSrcAndDstSelToOpSelXForm_1_1(MachineInstrBuilder &MIB,
381 const MachineInstr &
MI,
384 void renderDstSelToOpSelXForm(MachineInstrBuilder &MIB,
385 const MachineInstr &
MI,
int OpIdx)
const;
387 void renderSrcSelToOpSelXForm(MachineInstrBuilder &MIB,
388 const MachineInstr &
MI,
int OpIdx)
const;
390 void renderSrcAndDstSelToOpSelXForm_2_0(MachineInstrBuilder &MIB,
391 const MachineInstr &
MI,
394 void renderDstSelToOpSel3XFormXForm(MachineInstrBuilder &MIB,
395 const MachineInstr &
MI,
int OpIdx)
const;
397 void renderNegateImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
400 void renderBitcastFPImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
403 void renderBitcastFPImm32(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
405 renderBitcastFPImm(MIB,
MI,
OpIdx);
407 void renderBitcastFPImm64(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
409 renderBitcastFPImm(MIB,
MI,
OpIdx);
412 void renderCountTrailingOnesImm(MachineInstrBuilder &MIB,
413 const MachineInstr &
MI,
int OpIdx)
const;
414 void renderExtractCPol(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
416 void renderExtractSWZ(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
418 void renderExtractCpolSetGLC(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
421 void renderFrameIndex(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
424 void renderFPPow2ToExponent(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
427 void renderRoundMode(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
430 void renderVOP3PModsNeg(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
432 void renderVOP3PModsNegs(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
434 void renderVOP3PModsNegAbs(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
437 void renderPrefetchLoc(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
440 void renderScaledMAIIntrinsicOperand(MachineInstrBuilder &MIB,
441 const MachineInstr &
MI,
int OpIdx)
const;
443 bool isInlineImmediate(
const APInt &Imm)
const;
444 bool isInlineImmediate(
const APFloat &Imm)
const;
448 bool isUnneededShiftMask(
const MachineInstr &
MI,
unsigned ShAmtBits)
const;
466 const SIInstrInfo &TII;
467 const SIRegisterInfo &TRI;
468 const AMDGPURegisterBankInfo &RBI;
469 const AMDGPUTargetMachine &TM;
470 const GCNSubtarget &STI;
471#define GET_GLOBALISEL_PREDICATES_DECL
472#define AMDGPUSubtarget GCNSubtarget
473#include "AMDGPUGenGlobalISel.inc"
474#undef GET_GLOBALISEL_PREDICATES_DECL
475#undef AMDGPUSubtarget
477#define GET_GLOBALISEL_TEMPORARIES_DECL
478#include "AMDGPUGenGlobalISel.inc"
479#undef GET_GLOBALISEL_TEMPORARIES_DECL