|
LLVM
4.0.0
|
Struct used to represent the placement of a repairing point for a given operand. More...
#include <RegBankSelect.h>
Public Types | |
| enum | RepairingKind { None, Insert, Reassign, Impossible } |
| Define the kind of action this repairing needs. More... | |
| typedef SmallVector < std::unique_ptr< InsertPoint >, 2 > | InsertionPoints |
| Convenient types for a list of insertion points. More... | |
| typedef InsertionPoints::iterator | insertpt_iterator |
| typedef InsertionPoints::const_iterator | const_insertpt_iterator |
Public Member Functions | |
| RepairingPlacement (MachineInstr &MI, unsigned OpIdx, const TargetRegisterInfo &TRI, Pass &P, RepairingKind Kind=RepairingKind::Insert) | |
Create a repairing placement for the OpIdx-th operand of MI. More... | |
| void | switchTo (RepairingKind NewKind) |
Change the type of this repairing placement to NewKind. More... | |
| RepairingKind | getKind () const |
| Getters. More... | |
| unsigned | getOpIdx () const |
| bool | canMaterialize () const |
| bool | hasSplit () |
| void | addInsertPoint (MachineBasicBlock &MBB, bool Beginning) |
| Overloaded methods to add an insertion point. More... | |
| void | addInsertPoint (MachineInstr &MI, bool Before) |
| Add a InstrInsertionPoint to the list of InsertPoints. More... | |
| void | addInsertPoint (MachineBasicBlock &Src, MachineBasicBlock &Dst) |
Add an EdgeInsertionPoint (Src, Dst) to the list of InsertPoints. More... | |
| void | addInsertPoint (InsertPoint &Point) |
| Add an InsertPoint to the list of insert points. More... | |
| insertpt_iterator | begin () |
| Accessors related to the insertion points. More... | |
| insertpt_iterator | end () |
| const_insertpt_iterator | begin () const |
| const_insertpt_iterator | end () const |
| unsigned | getNumInsertPoints () const |
Struct used to represent the placement of a repairing point for a given operand.
Definition at line 297 of file RegBankSelect.h.
| typedef InsertionPoints::const_iterator llvm::RegBankSelect::RepairingPlacement::const_insertpt_iterator |
Definition at line 315 of file RegBankSelect.h.
| typedef SmallVector<std::unique_ptr<InsertPoint>, 2> llvm::RegBankSelect::RepairingPlacement::InsertionPoints |
Convenient types for a list of insertion points.
Definition at line 313 of file RegBankSelect.h.
Definition at line 314 of file RegBankSelect.h.
Define the kind of action this repairing needs.
Definition at line 300 of file RegBankSelect.h.
| RegBankSelect::RepairingPlacement::RepairingPlacement | ( | MachineInstr & | MI, |
| unsigned | OpIdx, | ||
| const TargetRegisterInfo & | TRI, | ||
| Pass & | P, | ||
| RepairingPlacement::RepairingKind | Kind = RepairingKind::Insert |
||
| ) |
Create a repairing placement for the OpIdx-th operand of MI.
TRI is used to make some checks on the register aliases if the machine operand is a physical register. P is used to to update liveness information and such when materializing the points.
Definition at line 639 of file RegBankSelect.cpp.
References addInsertPoint(), assert(), llvm::MachineBasicBlock::begin(), llvm::WebAssembly::End, llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::getFirstNonPHI(), llvm::MachineBasicBlock::getLastNonDebugInstr(), llvm::MachineOperand::getMBB(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isDef(), llvm::MachineInstr::isPHI(), llvm::MachineOperand::isReg(), llvm::MachineInstr::isTerminator(), MI, and llvm::MachineBasicBlock::successors().
| void RegBankSelect::RepairingPlacement::addInsertPoint | ( | MachineBasicBlock & | MBB, |
| bool | Beginning | ||
| ) |
Overloaded methods to add an insertion point.
Add a MBBInsertionPoint to the list of InsertPoints.
Definition at line 735 of file RegBankSelect.cpp.
Referenced by RepairingPlacement().
| void RegBankSelect::RepairingPlacement::addInsertPoint | ( | MachineInstr & | MI, |
| bool | Before | ||
| ) |
Add a InstrInsertionPoint to the list of InsertPoints.
Definition at line 730 of file RegBankSelect.cpp.
| void RegBankSelect::RepairingPlacement::addInsertPoint | ( | MachineBasicBlock & | Src, |
| MachineBasicBlock & | Dst | ||
| ) |
Add an EdgeInsertionPoint (Src, Dst) to the list of InsertPoints.
Definition at line 740 of file RegBankSelect.cpp.
References P.
| void RegBankSelect::RepairingPlacement::addInsertPoint | ( | RegBankSelect::InsertPoint & | Point | ) |
Add an InsertPoint to the list of insert points.
This method takes the ownership of &Point.
Definition at line 745 of file RegBankSelect.cpp.
References llvm::RegBankSelect::InsertPoint::canMaterialize(), and llvm::RegBankSelect::InsertPoint::isSplit().
|
inline |
Accessors related to the insertion points.
Definition at line 366 of file RegBankSelect.h.
References llvm::SmallVectorTemplateCommon< T, typename >::begin().
|
inline |
Definition at line 369 of file RegBankSelect.h.
References llvm::SmallVectorTemplateCommon< T, typename >::begin().
|
inline |
Definition at line 347 of file RegBankSelect.h.
|
inline |
Definition at line 367 of file RegBankSelect.h.
References llvm::SmallVectorTemplateCommon< T, typename >::end().
|
inline |
Definition at line 370 of file RegBankSelect.h.
References llvm::SmallVectorTemplateCommon< T, typename >::end().
|
inline |
Getters.
Definition at line 345 of file RegBankSelect.h.
|
inline |
Definition at line 372 of file RegBankSelect.h.
References llvm::SmallVectorTemplateCommon< T, typename >::size().
|
inline |
Definition at line 346 of file RegBankSelect.h.
|
inline |
Definition at line 348 of file RegBankSelect.h.
|
inline |
Change the type of this repairing placement to NewKind.
It is not possible to switch a repairing placement to the RepairingKind::Insert. There is no fundamental problem with that, but no uses as well, so do not support it for now.
Definition at line 382 of file RegBankSelect.h.
References assert(), and llvm::SmallVectorImpl< T >::clear().
1.8.6