Lines Matching refs:LIS
103 LiveIntervals &LIS) { in convertImplicitDefToConstZero() argument
131 LIS.InsertMachineInstrInMaps(*Const); in convertImplicitDefToConstZero()
273 const LiveIntervals &LIS) { in getVRegDef() argument
279 if (const VNInfo *ValNo = LIS.getInterval(Reg).getVNInfoBefore( in getVRegDef()
280 LIS.getInstructionIndex(*Insert))) in getVRegDef()
281 return LIS.getInstructionFromIndex(ValNo->def); in getVRegDef()
290 MachineDominatorTree &MDT, LiveIntervals &LIS) { in hasOneUse() argument
296 const LiveInterval &LI = LIS.getInterval(Reg); in hasOneUse()
298 LI.getVNInfoAt(LIS.getInstructionIndex(*Def).getRegSlot()); in hasOneUse()
301 const auto &Result = LI.Query(LIS.getInstructionIndex(*I.getParent())); in hasOneUse()
440 LiveIntervals &LIS, in oneUseDominatesOtherUses() argument
442 const LiveInterval &LI = LIS.getInterval(Reg); in oneUseDominatesOtherUses()
445 VNInfo *OneUseVNI = LI.getVNInfoBefore(LIS.getInstructionIndex(*OneUseInst)); in oneUseDominatesOtherUses()
452 VNInfo *UseVNI = LI.getVNInfoBefore(LIS.getInstructionIndex(*UseInst)); in oneUseDominatesOtherUses()
510 static void shrinkToUses(LiveInterval &LI, LiveIntervals &LIS) { in shrinkToUses() argument
511 if (LIS.shrinkToUses(&LI)) { in shrinkToUses()
513 LIS.splitSeparateComponents(LI, SplitLIs); in shrinkToUses()
521 MachineInstr *Insert, LiveIntervals &LIS, in moveForSingleUse() argument
529 LIS.handleMove(*Def); in moveForSingleUse()
543 LIS.createAndComputeVirtRegInterval(NewReg); in moveForSingleUse()
546 LiveInterval &LI = LIS.getInterval(Reg); in moveForSingleUse()
547 LI.removeSegment(LIS.getInstructionIndex(*Def).getRegSlot(), in moveForSingleUse()
548 LIS.getInstructionIndex(*Op.getParent()).getRegSlot(), in moveForSingleUse()
566 MachineBasicBlock::instr_iterator Insert, LiveIntervals &LIS, in rematerializeCheapDef() argument
578 LIS.InsertMachineInstrInMaps(*Clone); in rematerializeCheapDef()
579 LIS.createAndComputeVirtRegInterval(NewReg); in rematerializeCheapDef()
588 LiveInterval &LI = LIS.getInterval(Reg); in rematerializeCheapDef()
589 shrinkToUses(LI, LIS); in rematerializeCheapDef()
590 IsDead = !LI.liveAt(LIS.getInstructionIndex(Def).getDeadSlot()); in rematerializeCheapDef()
597 SlotIndex Idx = LIS.getInstructionIndex(Def).getRegSlot(); in rematerializeCheapDef()
598 LIS.removePhysRegDefAt(MCRegister::from(WebAssembly::ARGUMENTS), Idx); in rematerializeCheapDef()
599 LIS.removeInterval(Reg); in rematerializeCheapDef()
600 LIS.RemoveMachineInstrFromMaps(Def); in rematerializeCheapDef()
634 MachineInstr *Insert, LiveIntervals &LIS, WebAssemblyFunctionInfo &MFI, in moveAndTeeForMultiUse() argument
642 LIS.handleMove(*Def); in moveAndTeeForMultiUse()
655 SlotIndex TeeIdx = LIS.InsertMachineInstrInMaps(*Tee).getRegSlot(); in moveAndTeeForMultiUse()
656 SlotIndex DefIdx = LIS.getInstructionIndex(*Def).getRegSlot(); in moveAndTeeForMultiUse()
661 LiveInterval &LI = LIS.getInterval(Reg); in moveAndTeeForMultiUse()
666 shrinkToUses(LI, LIS); in moveAndTeeForMultiUse()
669 LIS.createAndComputeVirtRegInterval(TeeReg); in moveAndTeeForMultiUse()
670 LIS.createAndComputeVirtRegInterval(DefReg); in moveAndTeeForMultiUse()
816 auto &LIS = getAnalysis<LiveIntervals>(); in runOnMachineFunction() local
854 MachineInstr *DefI = getVRegDef(Reg, Insert, MRI, LIS); in runOnMachineFunction()
899 if (CanMove && hasOneUse(Reg, DefI, MRI, MDT, LIS)) { in runOnMachineFunction()
900 Insert = moveForSingleUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, MRI); in runOnMachineFunction()
910 LIS, MFI, MRI, TII, TRI); in runOnMachineFunction()
912 LIS, MFI)) { in runOnMachineFunction()
913 Insert = moveAndTeeForMultiUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, in runOnMachineFunction()
947 convertImplicitDefToConstZero(Insert, MRI, TII, MF, LIS); in runOnMachineFunction()