Lines Matching refs:LIS

103                                           LiveIntervals &LIS) {  in convertImplicitDefToConstZero()  argument
268 const LiveIntervals &LIS) { in getVRegDef() argument
274 if (const VNInfo *ValNo = LIS.getInterval(Reg).getVNInfoBefore( in getVRegDef()
275 LIS.getInstructionIndex(*Insert))) in getVRegDef()
276 return LIS.getInstructionFromIndex(ValNo->def); in getVRegDef()
285 MachineDominatorTree &MDT, LiveIntervals &LIS) { in hasOneUse() argument
291 const LiveInterval &LI = LIS.getInterval(Reg); in hasOneUse()
293 LI.getVNInfoAt(LIS.getInstructionIndex(*Def).getRegSlot()); in hasOneUse()
296 const auto &Result = LI.Query(LIS.getInstructionIndex(*I.getParent())); in hasOneUse()
434 LiveIntervals &LIS, in oneUseDominatesOtherUses() argument
436 const LiveInterval &LI = LIS.getInterval(Reg); in oneUseDominatesOtherUses()
439 VNInfo *OneUseVNI = LI.getVNInfoBefore(LIS.getInstructionIndex(*OneUseInst)); in oneUseDominatesOtherUses()
446 VNInfo *UseVNI = LI.getVNInfoBefore(LIS.getInstructionIndex(*UseInst)); in oneUseDominatesOtherUses()
504 static void shrinkToUses(LiveInterval &LI, LiveIntervals &LIS) { in shrinkToUses() argument
505 if (LIS.shrinkToUses(&LI)) { in shrinkToUses()
507 LIS.splitSeparateComponents(LI, SplitLIs); in shrinkToUses()
515 MachineInstr *Insert, LiveIntervals &LIS, in moveForSingleUse() argument
523 LIS.handleMove(*Def); in moveForSingleUse()
537 LIS.createAndComputeVirtRegInterval(NewReg); in moveForSingleUse()
540 LiveInterval &LI = LIS.getInterval(Reg); in moveForSingleUse()
541 LI.removeSegment(LIS.getInstructionIndex(*Def).getRegSlot(), in moveForSingleUse()
542 LIS.getInstructionIndex(*Op.getParent()).getRegSlot(), in moveForSingleUse()
560 MachineBasicBlock::instr_iterator Insert, LiveIntervals &LIS, in rematerializeCheapDef() argument
572 LIS.InsertMachineInstrInMaps(*Clone); in rematerializeCheapDef()
573 LIS.createAndComputeVirtRegInterval(NewReg); in rematerializeCheapDef()
582 LiveInterval &LI = LIS.getInterval(Reg); in rematerializeCheapDef()
583 shrinkToUses(LI, LIS); in rematerializeCheapDef()
584 IsDead = !LI.liveAt(LIS.getInstructionIndex(Def).getDeadSlot()); in rematerializeCheapDef()
591 SlotIndex Idx = LIS.getInstructionIndex(Def).getRegSlot(); in rematerializeCheapDef()
592 LIS.removePhysRegDefAt(MCRegister::from(WebAssembly::ARGUMENTS), Idx); in rematerializeCheapDef()
593 LIS.removeInterval(Reg); in rematerializeCheapDef()
594 LIS.RemoveMachineInstrFromMaps(Def); in rematerializeCheapDef()
628 MachineInstr *Insert, LiveIntervals &LIS, WebAssemblyFunctionInfo &MFI, in moveAndTeeForMultiUse() argument
636 LIS.handleMove(*Def); in moveAndTeeForMultiUse()
649 SlotIndex TeeIdx = LIS.InsertMachineInstrInMaps(*Tee).getRegSlot(); in moveAndTeeForMultiUse()
650 SlotIndex DefIdx = LIS.getInstructionIndex(*Def).getRegSlot(); in moveAndTeeForMultiUse()
655 LiveInterval &LI = LIS.getInterval(Reg); in moveAndTeeForMultiUse()
660 shrinkToUses(LI, LIS); in moveAndTeeForMultiUse()
663 LIS.createAndComputeVirtRegInterval(TeeReg); in moveAndTeeForMultiUse()
664 LIS.createAndComputeVirtRegInterval(DefReg); in moveAndTeeForMultiUse()
809 auto &LIS = getAnalysis<LiveIntervals>(); in runOnMachineFunction() local
847 MachineInstr *DefI = getVRegDef(Reg, Insert, MRI, LIS); in runOnMachineFunction()
874 if (CanMove && hasOneUse(Reg, DefI, MRI, MDT, LIS)) { in runOnMachineFunction()
875 Insert = moveForSingleUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, MRI); in runOnMachineFunction()
885 LIS, MFI, MRI, TII, TRI); in runOnMachineFunction()
887 LIS, MFI)) { in runOnMachineFunction()
888 Insert = moveAndTeeForMultiUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, in runOnMachineFunction()
922 convertImplicitDefToConstZero(Insert, MRI, TII, MF, LIS); in runOnMachineFunction()