Lines Matching defs:OpToFold
28 MachineOperand *OpToFold;
40 UseMI(MI), OpToFold(nullptr), ShrinkOpcode(ShrinkOp), UseOpNo(OpNo),
49 OpToFold = FoldOp;
79 const MachineOperand &OpToFold) const;
111 MachineOperand *OpToFold) const;
117 bool tryToFoldACImm(const MachineOperand &OpToFold, MachineInstr *UseMI,
120 void foldOperand(MachineOperand &OpToFold,
130 bool foldInstOperand(MachineInstr &MI, MachineOperand &OpToFold) const;
214 const MachineInstr &UseMI, int OpNo, const MachineOperand &OpToFold) const {
215 if (!OpToFold.isFI())
555 Old.ChangeToGA(Fold.OpToFold->getGlobal(), Fold.OpToFold->getOffset(),
556 Fold.OpToFold->getTargetFlags());
565 MachineOperand *New = Fold.OpToFold;
591 MachineOperand *OpToFold) const {
595 if (!OpToFold->isImm())
604 tryAddToFoldList(FoldList, MI, TryAK ? 3 : 2, OpToFold);
608 // For fmamk swap operands 1 and 2 if OpToFold was meant for operand 1.
628 bool IsLegal = TII->isOperandLegal(*MI, OpNo, OpToFold);
629 if (!IsLegal && OpToFold->isImm()) {
630 FoldCandidate Fold(MI, OpNo, OpToFold);
645 bool FoldAsMAD = tryAddToFoldList(FoldList, MI, OpNo, OpToFold);
663 if (OpToFold->isImm()) {
671 appendFoldCandidate(FoldList, MI, OpNo, OpToFold);
700 if (!TII->isOperandLegal(*MI, CommuteOpNo, OpToFold)) {
703 (!OpToFold->isImm() && !OpToFold->isFI() && !OpToFold->isGlobal())) {
722 appendFoldCandidate(FoldList, MI, CommuteOpNo, OpToFold, true, Op32);
729 !OpToFold->isReg() && !TII->isInlineConstant(*OpToFold)) {
755 if (!OpToFold->isReg() && !TII->isInlineConstant(*OpToFold, OpInfo)) {
766 appendFoldCandidate(FoldList, MI, OpNo, OpToFold);
812 const MachineOperand &OpToFold, MachineInstr *UseMI, unsigned UseOpIdx,
822 if (OpToFold.isImm() && TII->isInlineConstant(OpToFold, OpTy) &&
823 TII->isOperandLegal(*UseMI, UseOpIdx, &OpToFold)) {
824 UseMI->getOperand(UseOpIdx).ChangeToImmediate(OpToFold.getImm());
828 if (!OpToFold.isReg())
831 Register UseReg = OpToFold.getReg();
878 MachineOperand &OpToFold, MachineInstr *UseMI, int UseOpIdx,
887 if (UseOp->isReg() && OpToFold.isReg() &&
912 foldOperand(OpToFold, RSUseMI, RSUseMI->getOperandNo(RSUse), FoldList,
918 if (tryToFoldACImm(OpToFold, UseMI, UseOpIdx, FoldList))
921 if (frameIndexMayFold(*UseMI, UseOpIdx, OpToFold)) {
940 UseMI->getOperand(UseOpIdx).ChangeToFrameIndex(OpToFold.getIndex());
954 OpToFold.isImm() || OpToFold.isFI() || OpToFold.isGlobal();
972 TII->isInlineConstant(OpToFold, AMDGPU::OPERAND_REG_INLINE_C_INT32)) {
974 UseMI->getOperand(1).ChangeToImmediate(OpToFold.getImm());
1009 if (UseMI->isCopy() && OpToFold.isReg() &&
1012 LLVM_DEBUG(dbgs() << "Folding " << OpToFold << "\n into " << *UseMI);
1014 Register UseReg = OpToFold.getReg();
1016 UseMI->getOperand(1).setSubReg(OpToFold.getSubReg());
1019 OpToFold.setIsKill(false);
1022 MRI->clearKillFlags(OpToFold.getReg());
1116 *OpToFold.getParent(),
1122 if (OpToFold.isImm())
1123 UseMI->getOperand(1).ChangeToImmediate(OpToFold.getImm());
1125 UseMI->getOperand(1).ChangeToFrameIndex(OpToFold.getIndex());
1130 if (OpToFold.isReg() && TRI->isSGPRReg(*MRI, OpToFold.getReg())) {
1133 *OpToFold.getParent(),
1142 UseMI->getOperand(1).setReg(OpToFold.getReg());
1143 UseMI->getOperand(1).setSubReg(OpToFold.getSubReg());
1160 if (OpToFold.isReg() && ST->needsAlignedVGPRs()) {
1161 // Don't fold if OpToFold doesn't hold an aligned register.
1163 TRI->getRegClassForReg(*MRI, OpToFold.getReg());
1165 if (TRI->hasVectorRegisters(RC) && OpToFold.getSubReg()) {
1166 unsigned SubReg = OpToFold.getSubReg();
1176 tryAddToFoldList(FoldList, UseMI, UseOpIdx, &OpToFold);
1185 const MCInstrDesc &FoldDesc = OpToFold.getParent()->getDesc();
1196 APInt Imm(64, OpToFold.getImm());
1209 tryAddToFoldList(FoldList, UseMI, UseOpIdx, &OpToFold);
1479 MachineOperand &OpToFold) const {
1488 if (OpToFold.isImm()) {
1511 foldOperand(OpToFold, UseMI, UseMI->getOperandNo(U), FoldList,
1524 assert(!Fold.isReg() || Fold.OpToFold);
1525 if (Fold.isReg() && Fold.OpToFold->getReg().isVirtual()) {
1526 Register Reg = Fold.OpToFold->getReg();
1527 MachineInstr *DefMI = Fold.OpToFold->getParent();
1535 assert(Fold.OpToFold && Fold.OpToFold->isReg());
1539 MRI->clearKillFlags(Fold.OpToFold->getReg());
1579 MachineOperand &OpToFold = *OpToFoldPtr;
1580 bool FoldingImm = OpToFold.isImm() || OpToFold.isFI() || OpToFold.isGlobal();
1583 if (!FoldingImm && !OpToFold.isReg())
1586 if (OpToFold.isReg() && !OpToFold.getReg().isVirtual())
1598 if (OpToFold.isReg() &&
1599 foldCopyToVGPROfScalarAddOfFrameIndex(DstReg, OpToFold.getReg(), MI))
1602 bool Changed = foldInstOperand(MI, OpToFold);