LLVM: lib/CodeGen/RegisterPressure.cpp File Reference (original) (raw)
Go to the source code of this file.
| Functions | |
|---|---|
| static void | increaseSetPressure (std::vector< unsigned > &CurrSetPressure, const MachineRegisterInfo &MRI, VirtRegOrUnit VRegOrUnit, LaneBitmask PrevMask, LaneBitmask NewMask) |
| Increase pressure for each pressure set provided by TargetRegisterInfo. | |
| static void | decreaseSetPressure (std::vector< unsigned > &CurrSetPressure, const MachineRegisterInfo &MRI, VirtRegOrUnit VRegOrUnit, LaneBitmask PrevMask, LaneBitmask NewMask) |
| Decrease pressure for each pressure set provided by TargetRegisterInfo. | |
| static const LiveRange * | getLiveRange (const LiveIntervals &LIS, VirtRegOrUnit VRegOrUnit) |
| static LaneBitmask | getRegLanes (ArrayRef< VRegMaskOrUnit > RegUnits, VirtRegOrUnit VRegOrUnit) |
| static void | addRegLanes (SmallVectorImpl< VRegMaskOrUnit > &RegUnits, VRegMaskOrUnit Pair) |
| static void | setRegZero (SmallVectorImpl< VRegMaskOrUnit > &RegUnits, VirtRegOrUnit VRegOrUnit) |
| static void | removeRegLanes (SmallVectorImpl< VRegMaskOrUnit > &RegUnits, VRegMaskOrUnit Pair) |
| static LaneBitmask | getLanesWithProperty (const LiveIntervals &LIS, const MachineRegisterInfo &MRI, bool TrackLaneMasks, VirtRegOrUnit VRegOrUnit, SlotIndex Pos, LaneBitmask SafeDefault, bool(*Property)(const LiveRange &LR, SlotIndex Pos)) |
| static LaneBitmask | getLiveLanesAt (const LiveIntervals &LIS, const MachineRegisterInfo &MRI, bool TrackLaneMasks, VirtRegOrUnit VRegOrUnit, SlotIndex Pos) |
| static void | computeExcessPressureDelta (ArrayRef< unsigned > OldPressureVec, ArrayRef< unsigned > NewPressureVec, RegPressureDelta &Delta, const RegisterClassInfo *RCI, ArrayRef< unsigned > LiveThruPressureVec) |
| Find the max change in excess pressure across all sets. | |
| static void | computeMaxPressureDelta (ArrayRef< unsigned > OldMaxPressureVec, ArrayRef< unsigned > NewMaxPressureVec, ArrayRef< PressureChange > CriticalPSets, ArrayRef< unsigned > MaxPressureLimit, RegPressureDelta &Delta) |
| Find the max change in max pressure that either surpasses a critical PSet limit or exceeds the current MaxPressureLimit. | |
| static LaneBitmask | findUseBetween (VirtRegOrUnit VRegOrUnit, LaneBitmask LastUseMask, SlotIndex PriorUseIdx, SlotIndex NextUseIdx, const MachineRegisterInfo &MRI, const LiveIntervals *LIS) |
| Helper to find a vreg use between two indices [PriorUseIdx, NextUseIdx). |
◆ addRegLanes()
Definition at line 380 of file RegisterPressure.cpp.
References llvm::LaneBitmask::any(), assert(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::find_if(), I, llvm::VRegMaskOrUnit::LaneMask, llvm::Other, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::VRegMaskOrUnit::VRegOrUnit.
Referenced by llvm::RegPressureTracker::recede().
◆ computeExcessPressureDelta()
◆ computeMaxPressureDelta()
◆ decreaseSetPressure()
◆ findUseBetween()
Helper to find a vreg use between two indices [PriorUseIdx, NextUseIdx).
The query starts with a lane bitmask which gets lanes/bits removed for every use we find.
Definition at line 1213 of file RegisterPressure.cpp.
References llvm::VirtRegOrUnit::asMCRegUnit(), llvm::VirtRegOrUnit::asVirtualReg(), llvm::LiveIntervals::getInstructionIndex(), llvm::LaneBitmask::getNone(), llvm::MachineOperand::getParent(), llvm::SlotIndex::getRegSlot(), llvm::MachineOperand::getSubReg(), llvm::MachineOperand::isUndef(), llvm::VirtRegOrUnit::isVirtualReg(), MI, MRI, llvm::LaneBitmask::none(), Reg, Register, and TRI.
Referenced by llvm::GCNDownwardRPTracker::bumpDownwardPressure(), and llvm::RegPressureTracker::bumpDownwardPressure().
◆ getLanesWithProperty()
Definition at line 421 of file RegisterPressure.cpp.
References llvm::VirtRegOrUnit::asMCRegUnit(), llvm::VirtRegOrUnit::asVirtualReg(), llvm::LaneBitmask::getAll(), llvm::LiveIntervals::getCachedRegUnit(), llvm::LiveIntervals::getInterval(), llvm::LaneBitmask::getNone(), llvm::LiveInterval::hasSubRanges(), llvm::VirtRegOrUnit::isVirtualReg(), MRI, and llvm::LiveInterval::subranges().
Referenced by llvm::GCNRPTracker::getLastUsedLanes(), llvm::RegPressureTracker::getLastUsedLanes(), getLiveLanesAt(), llvm::RegPressureTracker::getLiveLanesAt(), and llvm::RegPressureTracker::getLiveThroughAt().