LLVM API Documentation
Calculate auxiliary information for a virtual register such as its spill weight and allocation hint. More...
#include <CalcSpillWeights.h>
Public Types | |
typedef float(* | NormalizingFn )(float, unsigned) |
Public Member Functions | |
VirtRegAuxInfo (MachineFunction &mf, LiveIntervals &lis, const MachineLoopInfo &loops, const MachineBlockFrequencyInfo &mbfi, NormalizingFn norm=normalizeSpillWeight) | |
void | calculateSpillWeightAndHint (LiveInterval &li) |
(re)compute li's spill weight and allocation hint. |
Calculate auxiliary information for a virtual register such as its spill weight and allocation hint.
Definition at line 45 of file CalcSpillWeights.h.
typedef float(* llvm::VirtRegAuxInfo::NormalizingFn)(float, unsigned) |
Definition at line 47 of file CalcSpillWeights.h.
llvm::VirtRegAuxInfo::VirtRegAuxInfo | ( | MachineFunction & | mf, |
LiveIntervals & | lis, | ||
const MachineLoopInfo & | loops, | ||
const MachineBlockFrequencyInfo & | mbfi, | ||
NormalizingFn | norm = normalizeSpillWeight |
||
) | [inline] |
Definition at line 58 of file CalcSpillWeights.h.
void VirtRegAuxInfo::calculateSpillWeightAndHint | ( | LiveInterval & | li | ) |
(re)compute li's spill weight and allocation hint.
Definition at line 97 of file CalcSpillWeights.cpp.
References llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT >::clear(), copyHint(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineLoopInfo::getLoopFor(), llvm::MachineInstr::getParent(), llvm::MachineRegisterInfo::getRegAllocationHint(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::LiveInterval::getSize(), llvm::LiveIntervals::getSlotIndexes(), llvm::LiveIntervals::getSpillWeight(), llvm::MachineFunction::getSubtarget(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::MachineRegisterInfo::isAllocatable(), llvm::MachineInstr::isCopy(), llvm::MachineInstr::isDebugValue(), llvm::MachineInstr::isIdentityCopy(), llvm::MachineInstr::isImplicitDef(), llvm::LiveIntervals::isLiveOutOfMBB(), llvm::LoopBase< BlockT, LoopT >::isLoopExiting(), llvm::TargetRegisterInfo::isPhysicalRegister(), isRematerializable(), llvm::LiveInterval::isSpillable(), llvm::LiveRange::isZeroLength(), llvm::LiveInterval::markNotSpillable(), llvm::MachineInstr::readsWritesVirtualRegister(), llvm::LiveInterval::reg, llvm::MachineRegisterInfo::reg_instr_begin(), llvm::MachineRegisterInfo::reg_instr_end(), llvm::MachineRegisterInfo::setRegAllocationHint(), and llvm::LiveInterval::weight.
Referenced by llvm::LiveRangeEdit::calculateRegClassAndHint(), and llvm::calculateSpillWeightsAndHints().