Jlm
Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
jlm::llvm::aa::RegionAwareModRefSummary Class Referencefinal

Mod/Ref summary of region-aware mod/ref summarizer. More...

Inheritance diagram for jlm::llvm::aa::RegionAwareModRefSummary:
Inheritance graph
[legend]
Collaboration diagram for jlm::llvm::aa::RegionAwareModRefSummary:
Collaboration graph
[legend]

Public Member Functions

 RegionAwareModRefSummary (const PointsToGraph &pointsToGraph)
 
 RegionAwareModRefSummary (const RegionAwareModRefSummary &)=delete
 
RegionAwareModRefSummaryoperator= (const RegionAwareModRefSummary &)=delete
 
const PointsToGraphGetPointsToGraph () const noexcept override
 
size_t NumModRefSets () const noexcept
 
const util::HashSet< PointsToGraph::NodeIndex > & GetModRefSet (ModRefSetIndex index) const
 
bool AddToModRefSet (ModRefSetIndex index, PointsToGraph::NodeIndex ptgNode)
 
bool PropagateModRefSet (ModRefSetIndex from, ModRefSetIndex to)
 
ModRefSetIndex CreateModRefSet ()
 
bool HasSetForNode (const rvsdg::Node &node) const
 
ModRefSetIndex GetSetForNode (const rvsdg::Node &node) const
 
ModRefSetIndex GetOrCreateSetForNode (const rvsdg::Node &node)
 
void MapNodeToSet (const rvsdg::Node &node, ModRefSetIndex index)
 
const util::HashSet< PointsToGraph::NodeIndex > & GetSimpleNodeModRef (const rvsdg::SimpleNode &node) const override
 
const util::HashSet< PointsToGraph::NodeIndex > & GetGammaEntryModRef (const rvsdg::GammaNode &gamma) const override
 
const util::HashSet< PointsToGraph::NodeIndex > & GetGammaExitModRef (const rvsdg::GammaNode &gamma) const override
 
const util::HashSet< PointsToGraph::NodeIndex > & GetThetaModRef (const rvsdg::ThetaNode &theta) const override
 
const util::HashSet< PointsToGraph::NodeIndex > & GetLambdaEntryModRef (const rvsdg::LambdaNode &lambda) const override
 
const util::HashSet< PointsToGraph::NodeIndex > & GetLambdaExitModRef (const rvsdg::LambdaNode &lambda) const override
 
- Public Member Functions inherited from jlm::llvm::aa::ModRefSummary
virtual ~ModRefSummary () noexcept=default
 

Static Public Member Functions

static std::unique_ptr< RegionAwareModRefSummaryCreate (const PointsToGraph &pointsToGraph)
 

Private Attributes

const PointsToGraphPointsToGraph_
 
std::vector< ModRefSetModRefSets_
 
std::unordered_map< const rvsdg::Node *, ModRefSetIndexNodeMap_
 

Detailed Description

Mod/Ref summary of region-aware mod/ref summarizer.

Definition at line 215 of file RegionAwareModRefSummarizer.cpp.

Constructor & Destructor Documentation

◆ RegionAwareModRefSummary() [1/2]

jlm::llvm::aa::RegionAwareModRefSummary::RegionAwareModRefSummary ( const PointsToGraph pointsToGraph)
inlineexplicit

Definition at line 218 of file RegionAwareModRefSummarizer.cpp.

◆ RegionAwareModRefSummary() [2/2]

jlm::llvm::aa::RegionAwareModRefSummary::RegionAwareModRefSummary ( const RegionAwareModRefSummary )
delete

Member Function Documentation

◆ AddToModRefSet()

bool jlm::llvm::aa::RegionAwareModRefSummary::AddToModRefSet ( ModRefSetIndex  index,
PointsToGraph::NodeIndex  ptgNode 
)
inline

Definition at line 246 of file RegionAwareModRefSummarizer.cpp.

◆ Create()

static std::unique_ptr<RegionAwareModRefSummary> jlm::llvm::aa::RegionAwareModRefSummary::Create ( const PointsToGraph pointsToGraph)
inlinestatic

Definition at line 338 of file RegionAwareModRefSummarizer.cpp.

◆ CreateModRefSet()

ModRefSetIndex jlm::llvm::aa::RegionAwareModRefSummary::CreateModRefSet ( )
inline

Creates a new ModRefSet that is not mapped to any node

Returns
the index of the new ModRefSet

Definition at line 265 of file RegionAwareModRefSummarizer.cpp.

◆ GetGammaEntryModRef()

const util::HashSet<PointsToGraph::NodeIndex>& jlm::llvm::aa::RegionAwareModRefSummary::GetGammaEntryModRef ( const rvsdg::GammaNode gamma) const
inlineoverridevirtual

Provides the set of memory nodes that should be routed into a given gamma node

Parameters
gammathe gamma node
Returns
the entry Mod/Ref set for the gamma

Implements jlm::llvm::aa::ModRefSummary.

Definition at line 308 of file RegionAwareModRefSummarizer.cpp.

◆ GetGammaExitModRef()

const util::HashSet<PointsToGraph::NodeIndex>& jlm::llvm::aa::RegionAwareModRefSummary::GetGammaExitModRef ( const rvsdg::GammaNode gamma) const
inlineoverridevirtual

Provides the set of memory nodes that should be routed out of a given gamma node

Parameters
gammathe gamma node
Returns
the exit Mod/Ref set for the gamma

Implements jlm::llvm::aa::ModRefSummary.

Definition at line 314 of file RegionAwareModRefSummarizer.cpp.

◆ GetLambdaEntryModRef()

const util::HashSet<PointsToGraph::NodeIndex>& jlm::llvm::aa::RegionAwareModRefSummary::GetLambdaEntryModRef ( const rvsdg::LambdaNode lambda) const
inlineoverridevirtual

Provides the set of memory nodes that are routed in to the given lambda's subregion

Parameters
lambdathe lambda node
Returns
the entry Mod/Ref set for the lambda

Implements jlm::llvm::aa::ModRefSummary.

Definition at line 326 of file RegionAwareModRefSummarizer.cpp.

◆ GetLambdaExitModRef()

const util::HashSet<PointsToGraph::NodeIndex>& jlm::llvm::aa::RegionAwareModRefSummary::GetLambdaExitModRef ( const rvsdg::LambdaNode lambda) const
inlineoverridevirtual

Provides the set of memory nodes that are routed out of the given lambda's subregion

Parameters
lambdathe lambda node
Returns
the exit Mod/Ref set for the lambda

Implements jlm::llvm::aa::ModRefSummary.

Definition at line 332 of file RegionAwareModRefSummarizer.cpp.

◆ GetModRefSet()

const util::HashSet<PointsToGraph::NodeIndex>& jlm::llvm::aa::RegionAwareModRefSummary::GetModRefSet ( ModRefSetIndex  index) const
inline

Definition at line 239 of file RegionAwareModRefSummarizer.cpp.

◆ GetOrCreateSetForNode()

ModRefSetIndex jlm::llvm::aa::RegionAwareModRefSummary::GetOrCreateSetForNode ( const rvsdg::Node node)
inline

Definition at line 286 of file RegionAwareModRefSummarizer.cpp.

◆ GetPointsToGraph()

const PointsToGraph& jlm::llvm::aa::RegionAwareModRefSummary::GetPointsToGraph ( ) const
inlineoverridevirtualnoexcept

Implements jlm::llvm::aa::ModRefSummary.

Definition at line 227 of file RegionAwareModRefSummarizer.cpp.

◆ GetSetForNode()

ModRefSetIndex jlm::llvm::aa::RegionAwareModRefSummary::GetSetForNode ( const rvsdg::Node node) const
inline

Definition at line 278 of file RegionAwareModRefSummarizer.cpp.

◆ GetSimpleNodeModRef()

const util::HashSet<PointsToGraph::NodeIndex>& jlm::llvm::aa::RegionAwareModRefSummary::GetSimpleNodeModRef ( const rvsdg::SimpleNode node) const
inlineoverridevirtual

Provides the set of memory nodes that represent memory locations that may be modified or referenced by the given simple node.

The simple node can be any operation that reads from memory, or produces value of memory, e.g.:

Parameters
nodethe node operating on memory
Returns
the Mod/Ref set of the node.

Implements jlm::llvm::aa::ModRefSummary.

Definition at line 302 of file RegionAwareModRefSummarizer.cpp.

◆ GetThetaModRef()

const util::HashSet<PointsToGraph::NodeIndex>& jlm::llvm::aa::RegionAwareModRefSummary::GetThetaModRef ( const rvsdg::ThetaNode theta) const
inlineoverridevirtual

Provides the set of memory nodes that should be routed in and out of a theta node

Parameters
thetathe theta node
Returns
the Mod/Ref set for the theta

Implements jlm::llvm::aa::ModRefSummary.

Definition at line 320 of file RegionAwareModRefSummarizer.cpp.

◆ HasSetForNode()

bool jlm::llvm::aa::RegionAwareModRefSummary::HasSetForNode ( const rvsdg::Node node) const
inline

Definition at line 272 of file RegionAwareModRefSummarizer.cpp.

◆ MapNodeToSet()

void jlm::llvm::aa::RegionAwareModRefSummary::MapNodeToSet ( const rvsdg::Node node,
ModRefSetIndex  index 
)
inline

Definition at line 295 of file RegionAwareModRefSummarizer.cpp.

◆ NumModRefSets()

size_t jlm::llvm::aa::RegionAwareModRefSummary::NumModRefSets ( ) const
inlinenoexcept

Definition at line 233 of file RegionAwareModRefSummarizer.cpp.

◆ operator=()

RegionAwareModRefSummary& jlm::llvm::aa::RegionAwareModRefSummary::operator= ( const RegionAwareModRefSummary )
delete

◆ PropagateModRefSet()

bool jlm::llvm::aa::RegionAwareModRefSummary::PropagateModRefSet ( ModRefSetIndex  from,
ModRefSetIndex  to 
)
inline

Definition at line 253 of file RegionAwareModRefSummarizer.cpp.

Member Data Documentation

◆ ModRefSets_

std::vector<ModRefSet> jlm::llvm::aa::RegionAwareModRefSummary::ModRefSets_
private

All sets of ModRef information in the summary

Definition at line 349 of file RegionAwareModRefSummarizer.cpp.

◆ NodeMap_

std::unordered_map<const rvsdg::Node *, ModRefSetIndex> jlm::llvm::aa::RegionAwareModRefSummary::NodeMap_
private

Map from nodes that have memory side effects, to their ModRefSet. Includes nodes like loads, stores, memcpy, free and calls. Also includes structural nodes like gamma, theta and lambda.

Definition at line 356 of file RegionAwareModRefSummarizer.cpp.

◆ PointsToGraph_

const PointsToGraph& jlm::llvm::aa::RegionAwareModRefSummary::PointsToGraph_
private

Definition at line 344 of file RegionAwareModRefSummarizer.cpp.


The documentation for this class was generated from the following file: