15 #ifndef LLVM_CODEGEN_MACHINEINSTRBUNDLE_H 16 #define LLVM_CODEGEN_MACHINEINSTRBUNDLE_H 47 while (I->isBundledWithPred())
55 while (I->isBundledWithPred())
63 while (I->isBundledWithSucc())
71 while (I->isBundledWithSucc())
101 if (++InstrI == InstrE || !InstrI->isInsideBundle())
103 OpI = InstrI->operands_begin();
104 OpE = InstrI->operands_end();
123 OpI = InstrI->operands_begin();
124 OpE = InstrI->operands_end();
137 assert(
isValid() &&
"Cannot advance MIOperands beyond the last operand");
146 return OpI - InstrI->operands_begin();
instr_iterator instr_end()
This class represents lattice values for constants.
bool Tied
Tied - Uses and defs must use the same register.
MIBundleOperands - Iterate over all operands in a bundle of machine instructions. ...
unsigned const TargetRegisterInfo * TRI
block Block Frequency true
MachineOperandIteratorBase(MachineInstr &MI, bool WholeBundle)
MachineOperandIteratorBase - Create an iterator that visits all operands on MI, or all operands on ev...
void operator++()
Preincrement. Move to the next operand.
VirtRegInfo analyzeVirtReg(unsigned Reg, SmallVectorImpl< std::pair< MachineInstr *, unsigned > > *Ops=nullptr)
analyzeVirtReg - Analyze how the current instruction or bundle uses a virtual register.
ConstMIBundleOperands(const MachineInstr &MI)
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
PhysRegInfo analyzePhysReg(unsigned Reg, const TargetRegisterInfo *TRI)
analyzePhysReg - Analyze how the current instruction or bundle uses a physical register.
APInt operator*(APInt a, uint64_t RHS)
bool isValid() const
isValid - Returns true until all the operands have been visited.
MachineBasicBlock::instr_iterator getBundleStart(MachineBasicBlock::instr_iterator I)
Returns an iterator to the first instruction in the bundle containing I.
MIBundleOperands(MachineInstr &MI)
bool PartialDeadDef
Reg is Defined and all defs of reg or an overlapping register are dead.
VirtRegInfo - Information about a virtual register used by a set of operands.
bool Writes
Writes - One of the operands writes the virtual register.
MachineOperand & deref() const
bool Read
Reg or one of its aliases is read.
bool Clobbered
There is a regmask operand indicating Reg is clobbered.
bool Killed
There is a use operand of reg or a super-register with kill flag set.
self_iterator getIterator()
bool Reads
Reads - One of the operands read the virtual register.
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
unsigned getOperandNo() const
getOperandNo - Returns the number of the current operand relative to its instruction.
const MachineOperand * operator->() const
ConstMIBundleOperands - Iterate over all operands in a const bundle of machine instructions.
MachineOperand class - Representation of each machine instruction operand.
ConstMIOperands(const MachineInstr &MI)
bool finalizeBundles(MachineFunction &MF)
finalizeBundles - Finalize instruction bundles in the specified MachineFunction.
MIOperands - Iterate over operands of a single instruction.
bool FullyDefined
Reg or a super-register is defined.
bool FullyRead
Reg or a super-register is read. The full register is read.
ConstMIOperands - Iterate over operands of a single const instruction.
const MachineBasicBlock * getParent() const
Representation of each machine instruction.
MIOperands(MachineInstr &MI)
MachineOperand * operator->() const
Information about how a physical register Reg is used by a set of operands.
Instructions::iterator instr_iterator
bool Defined
Reg or one of its aliases is defined.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
MachineBasicBlock::instr_iterator getBundleEnd(MachineBasicBlock::instr_iterator I)
Returns an iterator pointing beyond the bundle containing I.
MachineOperand * operator->() const
void finalizeBundle(MachineBasicBlock &MBB, MachineBasicBlock::instr_iterator FirstMI, MachineBasicBlock::instr_iterator LastMI)
finalizeBundle - Finalize a machine instruction bundle which includes a sequence of instructions star...
const MachineOperand * operator->() const
Instructions::const_iterator const_instr_iterator
MachineOperandIteratorBase - Iterator that can visit all operands on a MachineInstr, or all operands on a bundle of MachineInstrs.