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
 
util::HashSet< PointsToGraph::NodeIndex > & GetModRefSet (ModRefSetIndex index)
 
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 259 of file RegionAwareModRefSummarizer.cpp.

Constructor & Destructor Documentation

◆ RegionAwareModRefSummary() [1/2]

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

Definition at line 262 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 297 of file RegionAwareModRefSummarizer.cpp.

◆ Create()

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

Definition at line 389 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 316 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 359 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 365 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 377 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 383 of file RegionAwareModRefSummarizer.cpp.

◆ GetModRefSet() [1/2]

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

Definition at line 283 of file RegionAwareModRefSummarizer.cpp.

◆ GetModRefSet() [2/2]

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

Definition at line 290 of file RegionAwareModRefSummarizer.cpp.

◆ GetOrCreateSetForNode()

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

Definition at line 337 of file RegionAwareModRefSummarizer.cpp.

◆ GetPointsToGraph()

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

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

Definition at line 271 of file RegionAwareModRefSummarizer.cpp.

◆ GetSetForNode()

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

Definition at line 329 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 353 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 371 of file RegionAwareModRefSummarizer.cpp.

◆ HasSetForNode()

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

Definition at line 323 of file RegionAwareModRefSummarizer.cpp.

◆ MapNodeToSet()

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

Definition at line 346 of file RegionAwareModRefSummarizer.cpp.

◆ NumModRefSets()

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

Definition at line 277 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 304 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 400 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 407 of file RegionAwareModRefSummarizer.cpp.

◆ PointsToGraph_

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

Definition at line 395 of file RegionAwareModRefSummarizer.cpp.


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