29 #ifndef LLVM_CODEGEN_LIVEPHYSREGS_H
30 #define LLVM_CODEGEN_LIVEPHYSREGS_H
58 assert(TRI &&
"Invalid TargetRegisterInfo pointer.");
77 assert(TRI &&
"LivePhysRegs is not initialized.");
78 assert(Reg <= TRI->getNumRegs() &&
"Expected a physical register.");
87 assert(TRI &&
"LivePhysRegs is not initialized.");
88 assert(Reg <= TRI->getNumRegs() &&
"Expected a physical register.");
120 SmallVectorImpl<std::pair<unsigned, const MachineOperand*>> &Clobbers);
162 void computeLiveIns(LivePhysRegs &LiveRegs,
const TargetRegisterInfo &TRI,
163 MachineBasicBlock &
MBB);
167 #endif // LLVM_CODEGEN_LIVEPHYSREGS_H
bool isValid() const
isValid - returns true if this iterator is not yet at the end.
std::pair< iterator, bool > insert(const ValueT &Val)
insert - Attempts to insert a new element.
size_type count(const KeyT &Key) const
count - Returns 1 if this set contains an element identified by Key, 0 otherwise. ...
void computeLiveIns(LivePhysRegs &LiveRegs, const TargetRegisterInfo &TRI, MachineBasicBlock &MBB)
Compute the live-in list for MBB assuming all of its successors live-in lists are up-to-date...
LivePhysRegs()=default
Constructs a new empty LivePhysRegs set.
SparseSet< unsigned >::const_iterator const_iterator
bool empty() const
empty - Returns true if the set is empty.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
const_iterator end() const
Reg
All possible values of the reg field in the ModR/M byte.
void print(raw_ostream &OS) const
Prints the currently live registers to OS.
unsigned getNumRegs() const
Return the number of registers this target has (useful for sizing arrays holding per register informa...
void stepForward(const MachineInstr &MI, SmallVectorImpl< std::pair< unsigned, const MachineOperand * >> &Clobbers)
Simulates liveness when stepping forward over an instruction(bundle): Remove killed-uses, add defs.
LivePhysRegs(const TargetRegisterInfo *TRI)
Constructs and initialize an empty LivePhysRegs set.
iterator erase(iterator I)
erase - Erases an existing element identified by a valid iterator.
unsigned const MachineRegisterInfo * MRI
void addLiveOuts(const MachineBasicBlock &MBB)
Adds all live-out registers of basic block MBB.
void addLiveIns(const MachineBasicBlock &MBB)
Adds all live-in registers of basic block MBB.
void init(const TargetRegisterInfo &TRI)
Clear and initialize the LivePhysRegs set.
MCRegAliasIterator enumerates all registers aliasing Reg.
void stepBackward(const MachineInstr &MI)
Simulates liveness when stepping backwards over an instruction(bundle): Remove Defs, add uses.
bool contains(unsigned Reg) const
Returns true if register Reg is contained in the set.
void setUniverse(unsigned U)
setUniverse - Set the universe size which determines the largest key the set can hold.
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
MCSubRegIterator enumerates all sub-registers of Reg.
void addLiveOutsNoPristines(const MachineBasicBlock &MBB)
Like addLiveOuts() but does not add pristine registers/callee saved registers.
const_iterator begin() const
void removeRegsInMask(const MachineOperand &MO, SmallVectorImpl< std::pair< unsigned, const MachineOperand * >> *Clobbers)
Removes physical registers clobbered by the regmask operand MO.
bool empty() const
Returns true if the set is empty.
MachineOperand class - Representation of each machine instruction operand.
MachineRegisterInfo - Keep track of information for virtual and physical registers, including vreg register classes, use/def chains for registers, etc.
Representation of each machine instruction.
void removeReg(unsigned Reg)
Removes a physical register, all its sub-registers, and all its super-registers from the set...
A set of live physical registers with functions to track liveness when walking backward/forward throu...
raw_ostream & operator<<(raw_ostream &OS, const APInt &I)
void clear()
clear - Clears the set.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
void clear()
Clears the LivePhysRegs set.
void dump() const
Dumps the currently live registers to the debug output.
bool available(const MachineRegisterInfo &MRI, unsigned Reg) const
Returns true if register Reg and no aliasing register is in the set.
This class implements an extremely fast bulk output stream that can only output to a stream...
const_iterator end() const
const_iterator begin() const
void addReg(unsigned Reg)
Adds a physical register and all its sub-registers to the set.