• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/Target/WebAssembly/

Lines Matching refs:Def

262 // Test whether Def is safe and profitable to rematerialize.
263 static bool shouldRematerialize(const MachineInstr &Def, AliasAnalysis &AA,
265 return Def.isAsCheapAsAMove() && TII->isTriviallyReMaterializable(Def, &AA);
275 if (MachineInstr *Def = MRI.getUniqueVRegDef(Reg))
276 return Def;
278 // MRI doesn't know what the Def is. Try asking LIS.
286 // Test whether Reg, as defined at Def, has exactly one use. This is a
289 static bool hasOneUse(unsigned Reg, MachineInstr *Def, MachineRegisterInfo &MRI,
298 LI.getVNInfoAt(LIS.getInstructionIndex(*Def).getRegSlot());
313 // Test whether it's safe to move Def to just before Insert.
318 static bool isSafeToMove(const MachineOperand *Def, const MachineOperand *Use,
322 const MachineInstr *DefI = Def->getParent();
338 if (Def != DefI->defs().begin())
520 MachineInstr *Def, MachineBasicBlock &MBB,
524 LLVM_DEBUG(dbgs() << "Move for single use: "; Def->dump());
526 WebAssemblyDebugValueManager DefDIs(Def);
527 MBB.splice(Insert, &MBB, Def);
529 LIS.handleMove(*Def);
539 Def->getOperand(0).setReg(NewReg);
547 LI.removeSegment(LIS.getInstructionIndex(*Def).getRegSlot(),
555 LLVM_DEBUG(dbgs() << " - Replaced register: "; Def->dump());
558 imposeStackOrdering(Def);
559 return Def;
565 unsigned Reg, MachineOperand &Op, MachineInstr &Def, MachineBasicBlock &MBB,
569 LLVM_DEBUG(dbgs() << "Rematerializing cheap def: "; Def.dump());
572 WebAssemblyDebugValueManager DefDIs(&Def);
575 TII->reMaterialize(MBB, Insert, NewReg, 0, Def, *TRI);
590 IsDead = !LI.liveAt(LIS.getInstructionIndex(Def).getDeadSlot());
597 SlotIndex Idx = LIS.getInstructionIndex(Def).getRegSlot();
600 LIS.RemoveMachineInstrFromMaps(Def);
601 Def.eraseFromParent();
617 /// Reg = INST ... // Def
624 /// DefReg = INST ... // Def (to become the new Insert)
633 unsigned Reg, MachineOperand &Op, MachineInstr *Def, MachineBasicBlock &MBB,
636 LLVM_DEBUG(dbgs() << "Move and tee for multi-use:"; Def->dump());
638 WebAssemblyDebugValueManager DefDIs(Def);
640 // Move Def into place.
641 MBB.splice(Insert, &MBB, Def);
642 LIS.handleMove(*Def);
648 MachineOperand &DefMO = Def->getOperand(0);
656 SlotIndex DefIdx = LIS.getInstructionIndex(*Def).getRegSlot();
660 // Tell LiveIntervals we moved the original vreg def from Def to Tee.
673 imposeStackOrdering(Def);
679 LLVM_DEBUG(dbgs() << " - Replaced register: "; Def->dump());
681 return Def;
886 MachineOperand *Def = DefI->findRegisterDefOperand(Reg);
887 assert(Def != nullptr);
897 isSafeToMove(Def, &Use, Insert, AA, MFI, MRI) &&