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;
161 std::pair<Register, unsigned> selectVOP3ModsImpl(
Register Src,
162 bool IsCanonicalizing =
true,
163 bool AllowAbs =
true,
164 bool OpSel =
false)
const;
168 bool ForceVGPR =
false)
const;
191 std::pair<Register, unsigned>
193 bool IsDOT =
false)
const;
195 selectVOP3PRetHelper(
MachineOperand &Root,
bool IsDOT =
false)
const;
230 bool IsSigned)
const;
232 int64_t *
Offset,
bool *ScaleOffset)
const;
242 std::pair<Register, int> selectFlatOffsetImpl(
MachineOperand &Root,
254 bool NeedIOffset =
true)
const;
281 bool isDSOffset2Legal(
Register Base, int64_t Offset0, int64_t Offset1,
282 unsigned Size)
const;
283 bool isFlatScratchBaseLegal(
Register Addr)
const;
284 bool isFlatScratchBaseLegalSV(
Register Addr)
const;
285 bool isFlatScratchBaseLegalSVImm(
Register Addr)
const;
287 std::pair<Register, unsigned>
298 std::pair<Register, unsigned> selectDSReadWrite2Impl(
MachineOperand &Root,
299 unsigned size)
const;
303 std::tuple<Register, int64_t, bool>
304 getPtrBaseWithConstantOffset(
Register Root,
310 struct MUBUFAddressData {
315 bool shouldUseAddr64(MUBUFAddressData AddrData)
const;
317 void splitIllegalMUBUFOffset(MachineIRBuilder &
B,
318 Register &SOffset, int64_t &ImmOffset)
const;
320 MUBUFAddressData parseMUBUFAddress(
Register Src)
const;
322 bool selectMUBUFAddr64Impl(MachineOperand &Root,
Register &VAddr,
326 bool selectMUBUFOffsetImpl(MachineOperand &Root,
Register &RSrcReg,
330 selectBUFSOffset(MachineOperand &Root)
const;
333 selectMUBUFAddr64(MachineOperand &Root)
const;
336 selectMUBUFOffset(MachineOperand &Root)
const;
342 std::pair<Register, unsigned> selectVOP3PMadMixModsImpl(MachineOperand &Root,
343 bool &Matched)
const;
347 void renderTruncImm32(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
348 int OpIdx = -1)
const;
350 void renderTruncTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
352 void renderZextBoolTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
355 void renderOpSelTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
358 void renderSrcAndDstSelToOpSelXForm_0_0(MachineInstrBuilder &MIB,
359 const MachineInstr &
MI,
362 void renderSrcAndDstSelToOpSelXForm_0_1(MachineInstrBuilder &MIB,
363 const MachineInstr &
MI,
366 void renderSrcAndDstSelToOpSelXForm_1_0(MachineInstrBuilder &MIB,
367 const MachineInstr &
MI,
370 void renderSrcAndDstSelToOpSelXForm_1_1(MachineInstrBuilder &MIB,
371 const MachineInstr &
MI,
374 void renderDstSelToOpSelXForm(MachineInstrBuilder &MIB,
375 const MachineInstr &
MI,
int OpIdx)
const;
377 void renderSrcSelToOpSelXForm(MachineInstrBuilder &MIB,
378 const MachineInstr &
MI,
int OpIdx)
const;
380 void renderSrcAndDstSelToOpSelXForm_2_0(MachineInstrBuilder &MIB,
381 const MachineInstr &
MI,
384 void renderDstSelToOpSel3XFormXForm(MachineInstrBuilder &MIB,
385 const MachineInstr &
MI,
int OpIdx)
const;
387 void renderNegateImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
390 void renderBitcastFPImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
393 void renderBitcastFPImm32(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
395 renderBitcastFPImm(MIB,
MI,
OpIdx);
397 void renderBitcastFPImm64(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
399 renderBitcastFPImm(MIB,
MI,
OpIdx);
402 void renderPopcntImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
404 void renderExtractCPol(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
406 void renderExtractSWZ(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
408 void renderExtractCpolSetGLC(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
411 void renderFrameIndex(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
414 void renderFPPow2ToExponent(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
417 void renderRoundMode(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
420 void renderVOP3PModsNeg(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
422 void renderVOP3PModsNegs(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
424 void renderVOP3PModsNegAbs(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
427 void renderPrefetchLoc(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
430 void renderScaledMAIIntrinsicOperand(MachineInstrBuilder &MIB,
431 const MachineInstr &
MI,
int OpIdx)
const;
433 bool isInlineImmediate(
const APInt &Imm)
const;
434 bool isInlineImmediate(
const APFloat &Imm)
const;
438 bool isUnneededShiftMask(
const MachineInstr &
MI,
unsigned ShAmtBits)
const;
456 const SIInstrInfo &TII;
457 const SIRegisterInfo &TRI;
458 const AMDGPURegisterBankInfo &RBI;
459 const AMDGPUTargetMachine &TM;
460 const GCNSubtarget &STI;
461#define GET_GLOBALISEL_PREDICATES_DECL
462#define AMDGPUSubtarget GCNSubtarget
463#include "AMDGPUGenGlobalISel.inc"
464#undef GET_GLOBALISEL_PREDICATES_DECL
465#undef AMDGPUSubtarget
467#define GET_GLOBALISEL_TEMPORARIES_DECL
468#include "AMDGPUGenGlobalISel.inc"
469#undef GET_GLOBALISEL_TEMPORARIES_DECL