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;
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;
193 std::pair<Register, unsigned>
195 bool IsDOT =
false)
const;
197 selectVOP3PRetHelper(
MachineOperand &Root,
bool IsDOT =
false)
const;
238 bool IsSigned)
const;
240 int64_t *
Offset,
bool *ScaleOffset)
const;
250 std::pair<Register, int>
263 bool NeedIOffset =
true)
const;
290 bool isDSOffset2Legal(
Register Base, int64_t Offset0, int64_t Offset1,
291 unsigned Size)
const;
292 bool isFlatScratchBaseLegal(
Register Addr)
const;
293 bool isFlatScratchBaseLegalSV(
Register Addr)
const;
294 bool isFlatScratchBaseLegalSVImm(
Register Addr)
const;
296 std::pair<Register, unsigned>
307 std::pair<Register, unsigned> selectDSReadWrite2Impl(
MachineOperand &Root,
308 unsigned size)
const;
312 std::tuple<Register, int64_t, bool>
313 getPtrBaseWithConstantOffset(
Register Root,
319 struct MUBUFAddressData {
324 bool shouldUseAddr64(MUBUFAddressData AddrData)
const;
326 void splitIllegalMUBUFOffset(MachineIRBuilder &
B,
327 Register &SOffset, int64_t &ImmOffset)
const;
329 MUBUFAddressData parseMUBUFAddress(
Register Src)
const;
331 bool selectMUBUFAddr64Impl(MachineOperand &Root,
Register &VAddr,
335 bool selectMUBUFOffsetImpl(MachineOperand &Root,
Register &RSrcReg,
339 selectBUFSOffset(MachineOperand &Root)
const;
342 selectMUBUFAddr64(MachineOperand &Root)
const;
345 selectMUBUFOffset(MachineOperand &Root)
const;
351 std::pair<Register, unsigned> selectVOP3PMadMixModsImpl(MachineOperand &Root,
352 bool &Matched)
const;
358 void renderTruncImm32(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
359 int OpIdx = -1)
const;
361 void renderTruncTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
363 void renderZextBoolTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
366 void renderOpSelTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
369 void renderSrcAndDstSelToOpSelXForm_0_0(MachineInstrBuilder &MIB,
370 const MachineInstr &
MI,
373 void renderSrcAndDstSelToOpSelXForm_0_1(MachineInstrBuilder &MIB,
374 const MachineInstr &
MI,
377 void renderSrcAndDstSelToOpSelXForm_1_0(MachineInstrBuilder &MIB,
378 const MachineInstr &
MI,
381 void renderSrcAndDstSelToOpSelXForm_1_1(MachineInstrBuilder &MIB,
382 const MachineInstr &
MI,
385 void renderDstSelToOpSelXForm(MachineInstrBuilder &MIB,
386 const MachineInstr &
MI,
int OpIdx)
const;
388 void renderSrcSelToOpSelXForm(MachineInstrBuilder &MIB,
389 const MachineInstr &
MI,
int OpIdx)
const;
391 void renderSrcAndDstSelToOpSelXForm_2_0(MachineInstrBuilder &MIB,
392 const MachineInstr &
MI,
395 void renderDstSelToOpSel3XFormXForm(MachineInstrBuilder &MIB,
396 const MachineInstr &
MI,
int OpIdx)
const;
398 void renderNegateImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
401 void renderBitcastFPImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
404 void renderBitcastFPImm32(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
406 renderBitcastFPImm(MIB,
MI,
OpIdx);
408 void renderBitcastFPImm64(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
410 renderBitcastFPImm(MIB,
MI,
OpIdx);
413 void renderCountTrailingOnesImm(MachineInstrBuilder &MIB,
414 const MachineInstr &
MI,
int OpIdx)
const;
415 void renderExtractCPol(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
417 void renderExtractSWZ(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
419 void renderExtractCpolSetGLC(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
422 void renderFPPow2ToExponent(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
425 void renderRoundMode(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
428 void renderVOP3PModsNeg(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
430 void renderVOP3PModsNegs(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
432 void renderVOP3PModsNegAbs(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
435 void renderPrefetchLoc(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
438 void renderScaledMAIIntrinsicOperand(MachineInstrBuilder &MIB,
439 const MachineInstr &
MI,
int OpIdx)
const;
441 bool isInlineImmediate(
const APInt &Imm)
const;
442 bool isInlineImmediate(
const APFloat &Imm)
const;
446 bool isUnneededShiftMask(
const MachineInstr &
MI,
unsigned ShAmtBits)
const;
464 const SIInstrInfo &TII;
465 const SIRegisterInfo &TRI;
466 const AMDGPURegisterBankInfo &RBI;
467 const GCNSubtarget &STI;
468#define GET_GLOBALISEL_PREDICATES_DECL
469#define AMDGPUSubtarget GCNSubtarget
470#include "AMDGPUGenGlobalISel.inc"
471#undef GET_GLOBALISEL_PREDICATES_DECL
472#undef AMDGPUSubtarget
474#define GET_GLOBALISEL_TEMPORARIES_DECL
475#include "AMDGPUGenGlobalISel.inc"
476#undef GET_GLOBALISEL_TEMPORARIES_DECL