86 unsigned SubIdx)
const;
88 bool constrainCopyLikeIntrin(
MachineInstr &
MI,
unsigned NewOpc)
const;
125 bool selectDSAppendConsume(
MachineInstr &
MI,
bool IsAppend)
const;
131 bool selectG_INTRINSIC_W_SIDE_EFFECTS(
MachineInstr &
I)
const;
162 std::pair<Register, unsigned> selectVOP3ModsImpl(
Register Src,
163 bool IsCanonicalizing =
true,
164 bool AllowAbs =
true,
165 bool OpSel =
false)
const;
166 std::pair<Register, unsigned> selectVOP3PModsF32Impl(
Register Src)
const;
170 bool ForceVGPR =
false)
const;
195 std::pair<Register, unsigned>
197 bool IsDOT =
false,
bool NoOpSel0 =
false)
const;
200 bool NoOpSel0 =
false)
const;
245 bool IsSMEM =
false)
const;
247 int64_t *
Offset,
bool *ScaleOffset)
const;
257 std::pair<Register, int64_t>
270 bool NeedIOffset =
true)
const;
297 bool isDSOffset2Legal(
Register Base, int64_t Offset0, int64_t Offset1,
298 unsigned Size)
const;
299 bool isFlatScratchBaseLegal(
Register Addr)
const;
300 bool isFlatScratchBaseLegalSV(
Register Addr)
const;
301 bool isFlatScratchBaseLegalSVImm(
Register Addr)
const;
303 std::pair<Register, int64_t>
314 std::pair<Register, int64_t> selectDSReadWrite2Impl(
MachineOperand &Root,
315 unsigned size)
const;
319 std::tuple<Register, int64_t, bool>
320 getPtrBaseWithConstantOffset(
Register Root,
326 struct MUBUFAddressData {
331 bool shouldUseAddr64(MUBUFAddressData AddrData)
const;
333 void splitIllegalMUBUFOffset(MachineIRBuilder &
B,
334 Register &SOffset, int64_t &ImmOffset)
const;
336 MUBUFAddressData parseMUBUFAddress(
Register Src)
const;
338 bool selectMUBUFAddr64Impl(MachineOperand &Root,
Register &VAddr,
342 bool selectMUBUFOffsetImpl(MachineOperand &Root,
Register &RSrcReg,
346 selectBUFSOffset(MachineOperand &Root)
const;
349 selectMUBUFAddr64(MachineOperand &Root)
const;
352 selectMUBUFOffset(MachineOperand &Root)
const;
358 std::pair<Register, unsigned> selectVOP3PMadMixModsImpl(MachineOperand &Root,
359 bool &Matched)
const;
365 void renderTruncTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
367 void renderPrefetchLen(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
369 void renderZextBoolTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
372 void renderOpSelTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
375 void renderSrcAndDstSelToOpSelXForm_0_0(MachineInstrBuilder &MIB,
376 const MachineInstr &
MI,
379 void renderSrcAndDstSelToOpSelXForm_0_1(MachineInstrBuilder &MIB,
380 const MachineInstr &
MI,
383 void renderSrcAndDstSelToOpSelXForm_1_0(MachineInstrBuilder &MIB,
384 const MachineInstr &
MI,
387 void renderSrcAndDstSelToOpSelXForm_1_1(MachineInstrBuilder &MIB,
388 const MachineInstr &
MI,
391 void renderDstSelToOpSelXForm(MachineInstrBuilder &MIB,
392 const MachineInstr &
MI,
int OpIdx)
const;
394 void renderSrcSelToOpSelXForm(MachineInstrBuilder &MIB,
395 const MachineInstr &
MI,
int OpIdx)
const;
397 void renderSrcAndDstSelToOpSelXForm_2_0(MachineInstrBuilder &MIB,
398 const MachineInstr &
MI,
401 void renderDstSelToOpSel3XFormXForm(MachineInstrBuilder &MIB,
402 const MachineInstr &
MI,
int OpIdx)
const;
404 void renderNegateImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
407 void renderBitcastFPImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
410 void renderBitcastFPImm32(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
412 renderBitcastFPImm(MIB,
MI, OpIdx);
414 void renderBitcastFPImm64(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
416 renderBitcastFPImm(MIB,
MI, OpIdx);
419 void renderCountTrailingOnesImm(MachineInstrBuilder &MIB,
420 const MachineInstr &
MI,
int OpIdx)
const;
421 void renderExtractCPol(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
423 void renderExtractSWZ(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
425 void renderExtractCpolSetGLC(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
428 void renderFPPow2ToExponent(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
431 void renderRoundMode(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
434 void renderVOP3PModsNeg(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
436 void renderVOP3PModsNegs(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
438 void renderVOP3PModsNegAbs(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
441 void renderPrefetchLoc(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
444 void renderScaledMAIIntrinsicOperand(MachineInstrBuilder &MIB,
445 const MachineInstr &
MI,
int OpIdx)
const;
447 bool isInlineImmediate(
const APInt &
Imm)
const;
448 bool isInlineImmediate(
const APFloat &
Imm)
const;
452 bool isUnneededShiftMask(
const MachineInstr &
MI,
unsigned ShAmtBits)
const;
470 const SIInstrInfo &TII;
471 const SIRegisterInfo &TRI;
472 const AMDGPURegisterBankInfo &RBI;
473 const GCNSubtarget &STI;
474#define GET_GLOBALISEL_PREDICATES_DECL
475#define AMDGPUSubtarget GCNSubtarget
476#include "AMDGPUGenGlobalISel.inc"
477#undef GET_GLOBALISEL_PREDICATES_DECL
478#undef AMDGPUSubtarget
480#define GET_GLOBALISEL_TEMPORARIES_DECL
481#include "AMDGPUGenGlobalISel.inc"
482#undef GET_GLOBALISEL_TEMPORARIES_DECL