LLVM API Documentation
#include <RegAllocPBQP.h>
Public Types | |
typedef std::set< unsigned > | RegSet |
Public Member Functions | |
PBQPBuilder () | |
Default constructor. | |
virtual | ~PBQPBuilder () |
Clean up a PBQPBuilder. | |
virtual std::unique_ptr < PBQPRAProblem > | build (MachineFunction *mf, const LiveIntervals *lis, const MachineBlockFrequencyInfo *mbfi, const RegSet &vregs) |
Builds PBQP instances to represent register allocation problems. Includes spill, interference and coalescing costs by default. You can extend this class to support additional constraints for your architecture.
Definition at line 110 of file RegAllocPBQP.h.
typedef std::set<unsigned> llvm::PBQPBuilder::RegSet |
Definition at line 116 of file RegAllocPBQP.h.
llvm::PBQPBuilder::PBQPBuilder | ( | ) | [inline] |
Default constructor.
Definition at line 119 of file RegAllocPBQP.h.
virtual llvm::PBQPBuilder::~PBQPBuilder | ( | ) | [inline, virtual] |
Clean up a PBQPBuilder.
Definition at line 122 of file RegAllocPBQP.h.
std::unique_ptr< PBQPRAProblem > PBQPBuilder::build | ( | MachineFunction * | mf, |
const LiveIntervals * | lis, | ||
const MachineBlockFrequencyInfo * | mbfi, | ||
const RegSet & | vregs | ||
) | [virtual] |
Build a PBQP instance to represent the register allocation problem for the given MachineFunction.
Reimplemented in llvm::PBQPBuilderWithCoalescing.
Definition at line 187 of file RegAllocPBQP.cpp.
References llvm::LiveIntervals::checkRegMaskInterference(), llvm::MachineRegisterInfo::def_empty(), llvm::BitVector::empty(), llvm::LiveRange::empty(), llvm::LiveIntervals::getInterval(), llvm::MCRegisterInfo::getNumRegs(), llvm::TargetRegisterClass::getRawAllocationOrder(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::LiveIntervals::getRegUnit(), llvm::MachineFunction::getSubtarget(), llvm::MachineRegisterInfo::isReserved(), llvm::MCRegisterInfo::DiffListIterator::isValid(), llvm::LiveRange::overlaps(), llvm::MachineRegisterInfo::setPhysRegUsed(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::ArrayRef< T >::size(), llvm::BitVector::test(), and llvm::LiveInterval::weight.