85 unsigned SubIdx)
const;
87 bool constrainCopyLikeIntrin(
MachineInstr &
MI,
unsigned NewOpc)
const;
124 bool selectDSAppendConsume(
MachineInstr &
MI,
bool IsAppend)
const;
130 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;
164 std::pair<Register, unsigned> selectVOP3PModsF32Impl(
Register Src)
const;
168 bool ForceVGPR =
false)
const;
191 std::pair<Register, unsigned>
193 bool IsDOT =
false)
const;
195 selectVOP3PRetHelper(
MachineOperand &Root,
bool IsDOT =
false)
const;
236 bool IsSigned)
const;
238 int64_t *
Offset,
bool *ScaleOffset)
const;
248 std::pair<Register, int>
261 bool NeedIOffset =
true)
const;
288 bool isDSOffset2Legal(
Register Base, int64_t Offset0, int64_t Offset1,
289 unsigned Size)
const;
290 bool isFlatScratchBaseLegal(
Register Addr)
const;
291 bool isFlatScratchBaseLegalSV(
Register Addr)
const;
292 bool isFlatScratchBaseLegalSVImm(
Register Addr)
const;
294 std::pair<Register, unsigned>
305 std::pair<Register, unsigned> selectDSReadWrite2Impl(
MachineOperand &Root,
306 unsigned size)
const;
310 std::tuple<Register, int64_t, bool>
311 getPtrBaseWithConstantOffset(
Register Root,
317 struct MUBUFAddressData {
322 bool shouldUseAddr64(MUBUFAddressData AddrData)
const;
324 void splitIllegalMUBUFOffset(MachineIRBuilder &
B,
325 Register &SOffset, int64_t &ImmOffset)
const;
327 MUBUFAddressData parseMUBUFAddress(
Register Src)
const;
329 bool selectMUBUFAddr64Impl(MachineOperand &Root,
Register &VAddr,
333 bool selectMUBUFOffsetImpl(MachineOperand &Root,
Register &RSrcReg,
337 selectBUFSOffset(MachineOperand &Root)
const;
340 selectMUBUFAddr64(MachineOperand &Root)
const;
343 selectMUBUFOffset(MachineOperand &Root)
const;
349 std::pair<Register, unsigned> selectVOP3PMadMixModsImpl(MachineOperand &Root,
350 bool &Matched)
const;
354 void renderTruncImm32(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
355 int OpIdx = -1)
const;
357 void renderTruncTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
359 void renderZextBoolTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
362 void renderOpSelTImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
365 void renderSrcAndDstSelToOpSelXForm_0_0(MachineInstrBuilder &MIB,
366 const MachineInstr &
MI,
369 void renderSrcAndDstSelToOpSelXForm_0_1(MachineInstrBuilder &MIB,
370 const MachineInstr &
MI,
373 void renderSrcAndDstSelToOpSelXForm_1_0(MachineInstrBuilder &MIB,
374 const MachineInstr &
MI,
377 void renderSrcAndDstSelToOpSelXForm_1_1(MachineInstrBuilder &MIB,
378 const MachineInstr &
MI,
381 void renderDstSelToOpSelXForm(MachineInstrBuilder &MIB,
382 const MachineInstr &
MI,
int OpIdx)
const;
384 void renderSrcSelToOpSelXForm(MachineInstrBuilder &MIB,
385 const MachineInstr &
MI,
int OpIdx)
const;
387 void renderSrcAndDstSelToOpSelXForm_2_0(MachineInstrBuilder &MIB,
388 const MachineInstr &
MI,
391 void renderDstSelToOpSel3XFormXForm(MachineInstrBuilder &MIB,
392 const MachineInstr &
MI,
int OpIdx)
const;
394 void renderNegateImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
397 void renderBitcastFPImm(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
400 void renderBitcastFPImm32(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
402 renderBitcastFPImm(MIB,
MI,
OpIdx);
404 void renderBitcastFPImm64(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
406 renderBitcastFPImm(MIB,
MI,
OpIdx);
409 void renderCountTrailingOnesImm(MachineInstrBuilder &MIB,
410 const MachineInstr &
MI,
int OpIdx)
const;
411 void renderExtractCPol(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
413 void renderExtractSWZ(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
415 void renderExtractCpolSetGLC(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
418 void renderFrameIndex(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
421 void renderFPPow2ToExponent(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
424 void renderRoundMode(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
427 void renderVOP3PModsNeg(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
429 void renderVOP3PModsNegs(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
431 void renderVOP3PModsNegAbs(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
434 void renderPrefetchLoc(MachineInstrBuilder &MIB,
const MachineInstr &
MI,
437 void renderScaledMAIIntrinsicOperand(MachineInstrBuilder &MIB,
438 const MachineInstr &
MI,
int OpIdx)
const;
440 bool isInlineImmediate(
const APInt &Imm)
const;
441 bool isInlineImmediate(
const APFloat &Imm)
const;
445 bool isUnneededShiftMask(
const MachineInstr &
MI,
unsigned ShAmtBits)
const;
463 const SIInstrInfo &TII;
464 const SIRegisterInfo &TRI;
465 const AMDGPURegisterBankInfo &RBI;
466 const GCNSubtarget &STI;
467#define GET_GLOBALISEL_PREDICATES_DECL
468#define AMDGPUSubtarget GCNSubtarget
469#include "AMDGPUGenGlobalISel.inc"
470#undef GET_GLOBALISEL_PREDICATES_DECL
471#undef AMDGPUSubtarget
473#define GET_GLOBALISEL_TEMPORARIES_DECL
474#include "AMDGPUGenGlobalISel.inc"
475#undef GET_GLOBALISEL_TEMPORARIES_DECL