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;
160 std::pair<Register, unsigned> selectVOP3ModsImpl(
Register Src,
161 bool IsCanonicalizing =
true,
162 bool AllowAbs =
true,
163 bool OpSel =
false)
const;
167 bool ForceVGPR =
false)
const;
190 std::pair<Register, unsigned>
192 bool IsDOT =
false)
const;
194 selectVOP3PRetHelper(
MachineOperand &Root,
bool IsDOT =
false)
const;
229 bool IsSigned)
const;
231 int64_t *
Offset,
bool *ScaleOffset)
const;
241 std::pair<Register, int> selectFlatOffsetImpl(
MachineOperand &Root,
253 bool NeedIOffset =
true)
const;
280 bool isDSOffset2Legal(
Register Base, int64_t Offset0, int64_t Offset1,
281 unsigned Size)
const;
282 bool isFlatScratchBaseLegal(
Register Addr)
const;
283 bool isFlatScratchBaseLegalSV(
Register Addr)
const;
284 bool isFlatScratchBaseLegalSVImm(
Register Addr)
const;
286 std::pair<Register, unsigned>
297 std::pair<Register, unsigned> selectDSReadWrite2Impl(
MachineOperand &Root,
298 unsigned size)
const;
302 std::tuple<Register, int64_t, bool>
303 getPtrBaseWithConstantOffset(
Register Root,
309 struct MUBUFAddressData {
314 bool shouldUseAddr64(MUBUFAddressData AddrData)
const;
316 void splitIllegalMUBUFOffset(MachineIRBuilder &
B,
317 Register &SOffset, int64_t &ImmOffset)
const;
319 MUBUFAddressData parseMUBUFAddress(
Register Src)
const;
321 bool selectMUBUFAddr64Impl(MachineOperand &Root,
Register &VAddr,
325 bool selectMUBUFOffsetImpl(MachineOperand &Root,
Register &RSrcReg,
329 selectBUFSOffset(MachineOperand &Root)
const;
332 selectMUBUFAddr64(MachineOperand &Root)
const;
335 selectMUBUFOffset(MachineOperand &Root)
const;
341 std::pair<Register, unsigned> selectVOP3PMadMixModsImpl(MachineOperand &Root,
342 bool &Matched)
const;
346 void renderTruncImm32(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
347 int OpIdx = -1)
const;
349 void renderTruncTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
351 void renderZextBoolTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
354 void renderOpSelTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
357 void renderSrcAndDstSelToOpSelXForm_0_0(MachineInstrBuilder &MIB,
358 const MachineInstr &
MI,
361 void renderSrcAndDstSelToOpSelXForm_0_1(MachineInstrBuilder &MIB,
362 const MachineInstr &
MI,
365 void renderSrcAndDstSelToOpSelXForm_1_0(MachineInstrBuilder &MIB,
366 const MachineInstr &
MI,
369 void renderSrcAndDstSelToOpSelXForm_1_1(MachineInstrBuilder &MIB,
370 const MachineInstr &
MI,
373 void renderDstSelToOpSelXForm(MachineInstrBuilder &MIB,
374 const MachineInstr &
MI,
int OpIdx)
const;
376 void renderSrcSelToOpSelXForm(MachineInstrBuilder &MIB,
377 const MachineInstr &
MI,
int OpIdx)
const;
379 void renderSrcAndDstSelToOpSelXForm_2_0(MachineInstrBuilder &MIB,
380 const MachineInstr &
MI,
383 void renderDstSelToOpSel3XFormXForm(MachineInstrBuilder &MIB,
384 const MachineInstr &
MI,
int OpIdx)
const;
386 void renderNegateImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
389 void renderBitcastFPImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
392 void renderBitcastFPImm32(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
394 renderBitcastFPImm(MIB,
MI,
OpIdx);
396 void renderBitcastFPImm64(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
398 renderBitcastFPImm(MIB,
MI,
OpIdx);
401 void renderPopcntImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
403 void renderExtractCPol(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
405 void renderExtractSWZ(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
407 void renderExtractCpolSetGLC(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
410 void renderFrameIndex(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
413 void renderFPPow2ToExponent(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
416 void renderRoundMode(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
419 void renderVOP3PModsNeg(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
421 void renderVOP3PModsNegs(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
423 void renderVOP3PModsNegAbs(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
426 void renderPrefetchLoc(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
429 void renderScaledMAIIntrinsicOperand(MachineInstrBuilder &MIB,
430 const MachineInstr &
MI,
int OpIdx)
const;
432 bool isInlineImmediate(
const APInt &Imm)
const;
433 bool isInlineImmediate(
const APFloat &Imm)
const;
437 bool isUnneededShiftMask(
const MachineInstr &
MI,
unsigned ShAmtBits)
const;
455 const SIInstrInfo &TII;
456 const SIRegisterInfo &TRI;
457 const AMDGPURegisterBankInfo &RBI;
458 const AMDGPUTargetMachine &TM;
459 const GCNSubtarget &STI;
460#define GET_GLOBALISEL_PREDICATES_DECL
461#define AMDGPUSubtarget GCNSubtarget
462#include "AMDGPUGenGlobalISel.inc"
463#undef GET_GLOBALISEL_PREDICATES_DECL
464#undef AMDGPUSubtarget
466#define GET_GLOBALISEL_TEMPORARIES_DECL
467#include "AMDGPUGenGlobalISel.inc"
468#undef GET_GLOBALISEL_TEMPORARIES_DECL