LLVM  4.0.0
Public Types | Public Member Functions | List of all members
llvm::VirtRegAuxInfo Class Reference

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, unsigned)
 

Public Member Functions

 VirtRegAuxInfo (MachineFunction &mf, LiveIntervals &lis, VirtRegMap *vrm, const MachineLoopInfo &loops, const MachineBlockFrequencyInfo &mbfi, NormalizingFn norm=normalizeSpillWeight)
 
void calculateSpillWeightAndHint (LiveInterval &li)
 (re)compute li's spill weight and allocation hint. More...
 

Detailed Description

Calculate auxiliary information for a virtual register such as its spill weight and allocation hint.

Definition at line 48 of file CalcSpillWeights.h.

Member Typedef Documentation

typedef float(* llvm::VirtRegAuxInfo::NormalizingFn)(float, unsigned, unsigned)

Definition at line 50 of file CalcSpillWeights.h.

Constructor & Destructor Documentation

llvm::VirtRegAuxInfo::VirtRegAuxInfo ( MachineFunction mf,
LiveIntervals lis,
VirtRegMap vrm,
const MachineLoopInfo loops,
const MachineBlockFrequencyInfo mbfi,
NormalizingFn  norm = normalizeSpillWeight 
)
inline

Definition at line 62 of file CalcSpillWeights.h.

Member Function Documentation

void VirtRegAuxInfo::calculateSpillWeightAndHint ( LiveInterval li)

(re)compute li's spill weight and allocation hint.

Definition at line 131 of file CalcSpillWeights.cpp.

References llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::clear(), copyHint(), E, llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineLoopInfo::getLoopFor(), llvm::MachineInstr::getParent(), llvm::MachineRegisterInfo::getRegAllocationHint(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::LiveIntervals::getRegMaskSlots(), 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::LiveRange::isLiveAtIndexes(), llvm::LiveIntervals::isLiveOutOfMBB(), llvm::LoopBase< N, M >::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().


The documentation for this class was generated from the following files: