Lines Matching defs:OpToFold
27 MachineOperand *OpToFold;
39 UseMI(MI), OpToFold(nullptr), ShrinkOpcode(ShrinkOp), UseOpNo(OpNo),
48 OpToFold = FoldOp;
79 const MachineOperand &OpToFold) const;
89 MachineOperand *OpToFold) const;
95 bool tryToFoldACImm(const MachineOperand &OpToFold, MachineInstr *UseMI,
98 void foldOperand(MachineOperand &OpToFold,
108 bool foldInstOperand(MachineInstr &MI, MachineOperand &OpToFold) const;
181 const MachineOperand &OpToFold) const {
182 if (!OpToFold.isFI())
433 Old.ChangeToGA(Fold.OpToFold->getGlobal(), Fold.OpToFold->getOffset(),
434 Fold.OpToFold->getTargetFlags());
443 MachineOperand *New = Fold.OpToFold;
469 MachineOperand *OpToFold) const {
473 if (!OpToFold->isImm())
482 tryAddToFoldList(FoldList, MI, TryAK ? 3 : 2, OpToFold);
486 // For fmamk swap operands 1 and 2 if OpToFold was meant for operand 1.
506 bool IsLegal = TII->isOperandLegal(*MI, OpNo, OpToFold);
507 if (!IsLegal && OpToFold->isImm()) {
508 FoldCandidate Fold(MI, OpNo, OpToFold);
523 bool FoldAsMAD = tryAddToFoldList(FoldList, MI, OpNo, OpToFold);
541 if (OpToFold->isImm()) {
549 appendFoldCandidate(FoldList, MI, OpNo, OpToFold);
578 if (!TII->isOperandLegal(*MI, CommuteOpNo, OpToFold)) {
581 (!OpToFold->isImm() && !OpToFold->isFI() && !OpToFold->isGlobal())) {
600 appendFoldCandidate(FoldList, MI, CommuteOpNo, OpToFold, true, Op32);
607 !OpToFold->isReg() && !TII->isInlineConstant(*OpToFold)) {
633 if (!OpToFold->isReg() && !TII->isInlineConstant(*OpToFold, OpInfo)) {
644 appendFoldCandidate(FoldList, MI, OpNo, OpToFold);
690 const MachineOperand &OpToFold, MachineInstr *UseMI, unsigned UseOpIdx,
700 if (OpToFold.isImm() && TII->isInlineConstant(OpToFold, OpTy) &&
701 TII->isOperandLegal(*UseMI, UseOpIdx, &OpToFold)) {
702 UseMI->getOperand(UseOpIdx).ChangeToImmediate(OpToFold.getImm());
706 if (!OpToFold.isReg())
709 Register UseReg = OpToFold.getReg();
756 MachineOperand &OpToFold,
767 if (UseOp->isReg() && OpToFold.isReg() &&
792 foldOperand(OpToFold, RSUseMI, RSUseMI->getOperandNo(RSUse), FoldList,
798 if (tryToFoldACImm(OpToFold, UseMI, UseOpIdx, FoldList))
801 if (frameIndexMayFold(*UseMI, UseOpIdx, OpToFold)) {
820 UseMI->getOperand(UseOpIdx).ChangeToFrameIndex(OpToFold.getIndex());
834 OpToFold.isImm() || OpToFold.isFI() || OpToFold.isGlobal();
852 TII->isInlineConstant(OpToFold, AMDGPU::OPERAND_REG_INLINE_C_INT32)) {
854 UseMI->getOperand(1).ChangeToImmediate(OpToFold.getImm());
889 if (UseMI->isCopy() && OpToFold.isReg() &&
892 LLVM_DEBUG(dbgs() << "Folding " << OpToFold << "\n into " << *UseMI);
894 Register UseReg = OpToFold.getReg();
896 UseMI->getOperand(1).setSubReg(OpToFold.getSubReg());
899 OpToFold.setIsKill(false);
902 MRI->clearKillFlags(OpToFold.getReg());
1009 *OpToFold.getParent(),
1015 if (OpToFold.isImm())
1016 UseMI->getOperand(1).ChangeToImmediate(OpToFold.getImm());
1018 UseMI->getOperand(1).ChangeToFrameIndex(OpToFold.getIndex());
1023 if (OpToFold.isReg() && TRI->isSGPRReg(*MRI, OpToFold.getReg())) {
1026 *OpToFold.getParent(),
1035 UseMI->getOperand(1).setReg(OpToFold.getReg());
1036 UseMI->getOperand(1).setSubReg(OpToFold.getSubReg());
1053 if (OpToFold.isReg() && ST->needsAlignedVGPRs()) {
1054 // Don't fold if OpToFold doesn't hold an aligned register.
1056 TRI->getRegClassForReg(*MRI, OpToFold.getReg());
1058 if (TRI->hasVectorRegisters(RC) && OpToFold.getSubReg()) {
1059 unsigned SubReg = OpToFold.getSubReg();
1069 tryAddToFoldList(FoldList, UseMI, UseOpIdx, &OpToFold);
1078 const MCInstrDesc &FoldDesc = OpToFold.getParent()->getDesc();
1089 APInt Imm(64, OpToFold.getImm());
1102 tryAddToFoldList(FoldList, UseMI, UseOpIdx, &OpToFold);
1372 MachineOperand &OpToFold) const {
1381 if (OpToFold.isImm()) {
1404 foldOperand(OpToFold, UseMI, UseMI->getOperandNo(U), FoldList,
1417 assert(!Fold.isReg() || Fold.OpToFold);
1418 if (Fold.isReg() && Fold.OpToFold->getReg().isVirtual()) {
1419 Register Reg = Fold.OpToFold->getReg();
1420 MachineInstr *DefMI = Fold.OpToFold->getParent();
1428 assert(Fold.OpToFold && Fold.OpToFold->isReg());
1432 MRI->clearKillFlags(Fold.OpToFold->getReg());
1463 MachineOperand &OpToFold = MI.getOperand(1);
1464 bool FoldingImm = OpToFold.isImm() || OpToFold.isFI() || OpToFold.isGlobal();
1467 if (!FoldingImm && !OpToFold.isReg())
1470 if (OpToFold.isReg() && !OpToFold.getReg().isVirtual())
1482 bool Changed = foldInstOperand(MI, OpToFold);