Go to the documentation of this file.
9 #ifndef LLVM_CODEGEN_MACHINEREGIONINFO_H
10 #define LLVM_CODEGEN_MACHINEREGIONINFO_H
25 class MachinePostDominatorTree;
27 class MachineRegionNode;
28 class MachineRegionInfo;
45 return BB->succ_size();
111 inline MachineBasicBlock *
114 assert(!isSubRegion() &&
"This is not a MachineBasicBlock RegionNode!");
123 assert(isSubRegion() &&
"This is not a subregion RegionNode!");
175 extern template class RegionBase<RegionTraits<MachineFunction>>;
176 extern template class RegionNodeBase<RegionTraits<MachineFunction>>;
177 extern template class RegionInfoBase<RegionTraits<MachineFunction>>;
181 #endif // LLVM_CODEGEN_MACHINEREGIONINFO_H
This is an optimization pass for GlobalISel generic memory operations.
RegionT * getTopLevelRegion() const
void updateStatistics(MachineRegion *R) final
static NodeRef getEntryNode(MachineRegionInfo *RI)
A single entry single exit Region.
MachineRegion(MachineBasicBlock *Entry, MachineBasicBlock *Exit, MachineRegionInfo *RI, MachineDominatorTree *DT, MachineRegion *Parent=nullptr)
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
static nodes_iterator nodes_end(MachineRegionInfo *RI)
const_iterator end(StringRef path)
Get end iterator over path.
const_iterator begin(StringRef path, Style style=Style::native)
Get begin iterator over path.
void verifyAnalysis() const override
verifyAnalysis() - This member can be implemented by a analysis pass to check state of analysis infor...
RegionGraphTraits(Region, RegionNode)
~MachineRegionInfo() override
const MachineRegionInfo & getRegionInfo() const
void recalculate(MachineFunction &F, MachineDominatorTree *DT, MachinePostDominatorTree *PDT, MachineDominanceFrontier *DF)
Represent the analysis usage information of a pass.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
This class implements an extremely fast bulk output stream that can only output to a stream.
Analysis that detects all canonical Regions.
void print(raw_ostream &OS, const Module *) const override
print - Print out the internal state of the pass.
DomTreeNodeBase< MachineBasicBlock > MachineDomTreeNode
Representation of each machine instruction.
static nodes_iterator nodes_end(MachineRegionInfoPass *RI)
~MachineRegionInfoPass() override
static nodes_iterator nodes_begin(MachineRegionInfoPass *RI)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
A Module instance is used to store all the information related to an LLVM module.
RegionNodeGraphTraits(RegionNode, BasicBlock, Region)
MachineRegionInfo & getRegionInfo()
bool isSubRegion() const
Is this RegionNode a subregion?
bool runOnMachineFunction(MachineFunction &F) override
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
Base class for the actual dominator tree node.
MachinePostDominatorTree - an analysis pass wrapper for DominatorTree used to compute the post-domina...
bool operator==(const MachineRegion &RN) const
A RegionNode represents a subregion or a BasicBlock that is part of a Region.
static nodes_iterator nodes_begin(MachineRegionInfo *RI)
MachineRegionNode(MachineRegion *Parent, MachineBasicBlock *Entry, bool isSubRegion=false)
Common register allocation spilling lr str ldr sxth r3 ldr mla r4 can lr mov lr str ldr sxth r3 mla r4 and then merge mul and lr str ldr sxth r3 mla r4 It also increase the likelihood the store may become dead bb27 Successors according to LLVM BB
It looks like we only need to define PPCfmarto for these because according to these instructions perform RTO on fma s src2 rnd ← FPSCR RN
typename FlatIt< MachineRegionNode * > ::UnknownGraphTypeError NodeRef
DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominat...
static NodeRef getEntryNode(MachineRegionInfoPass *RI)
bool operator==(const MachineRegionNode &RN) const
static unsigned getNumSuccessors(MachineBasicBlock *BB)