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

#include <PredicateCorrelation.hpp>

Inheritance diagram for jlm::llvm::PredicateCorrelation:
Inheritance graph
[legend]
Collaboration diagram for jlm::llvm::PredicateCorrelation:
Collaboration graph
[legend]

Public Member Functions

 ~PredicateCorrelation () noexcept override
 
 PredicateCorrelation ()
 
 PredicateCorrelation (const PredicateCorrelation &)=delete
 
PredicateCorrelationoperator= (const PredicateCorrelation &)=delete
 
void Run (rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override
 Perform RVSDG transformation. More...
 
- Public Member Functions inherited from jlm::rvsdg::Transformation
virtual ~Transformation () noexcept
 
 Transformation (std::string_view Name)
 
const std::string_view & GetName () const noexcept
 
void Run (RvsdgModule &module)
 Perform RVSDG transformation. More...
 

Static Private Member Functions

static void correlatePredicatesInRegion (rvsdg::Region &region)
 
static void correlatePredicatesInTheta (rvsdg::ThetaNode &thetaNode)
 
static bool handleControlConstantCorrelation (const ThetaGammaPredicateCorrelation &correlation)
 
static bool handleMatchConstantCorrelation (const ThetaGammaPredicateCorrelation &correlation)
 

Detailed Description

Predicate Correlation correlates the predicates between theta and gamma nodes, and redirects their respective predicates to match operation nodes.

Theta-Gamma Predicate Correlation

If a theta node's predicate originates from a gamma node with two control flow constants, then the theta node's predicate is redirected to the gamma node's predicate match node.

Definition at line 270 of file PredicateCorrelation.hpp.

Constructor & Destructor Documentation

◆ ~PredicateCorrelation()

jlm::llvm::PredicateCorrelation::~PredicateCorrelation ( )
overridedefaultnoexcept

◆ PredicateCorrelation() [1/2]

jlm::llvm::PredicateCorrelation::PredicateCorrelation ( )
inline

Definition at line 275 of file PredicateCorrelation.hpp.

◆ PredicateCorrelation() [2/2]

jlm::llvm::PredicateCorrelation::PredicateCorrelation ( const PredicateCorrelation )
delete

Member Function Documentation

◆ correlatePredicatesInRegion()

void jlm::llvm::PredicateCorrelation::correlatePredicatesInRegion ( rvsdg::Region region)
staticprivate

Definition at line 283 of file PredicateCorrelation.cpp.

◆ correlatePredicatesInTheta()

void jlm::llvm::PredicateCorrelation::correlatePredicatesInTheta ( rvsdg::ThetaNode thetaNode)
staticprivate

Performs theta-gamma predicate correlation

Parameters
thetaNodeThe theta node for which to correlate.

Definition at line 323 of file PredicateCorrelation.cpp.

◆ handleControlConstantCorrelation()

bool jlm::llvm::PredicateCorrelation::handleControlConstantCorrelation ( const ThetaGammaPredicateCorrelation correlation)
staticprivate

Definition at line 359 of file PredicateCorrelation.cpp.

◆ handleMatchConstantCorrelation()

bool jlm::llvm::PredicateCorrelation::handleMatchConstantCorrelation ( const ThetaGammaPredicateCorrelation correlation)
staticprivate

Definition at line 378 of file PredicateCorrelation.cpp.

◆ operator=()

PredicateCorrelation& jlm::llvm::PredicateCorrelation::operator= ( const PredicateCorrelation )
delete

◆ Run()

void jlm::llvm::PredicateCorrelation::Run ( rvsdg::RvsdgModule module,
util::StatisticsCollector statisticsCollector 
)
overridevirtual

Perform RVSDG transformation.

Note
This method is expected to be called multiple times. An implementation is required to reset the objects' internal state to ensure correct behavior after every invocation.
Parameters
moduleRVSDG module the transformation is performed on.
statisticsCollectorStatistics collector for collecting transformation statistics.

Implements jlm::rvsdg::Transformation.

Definition at line 406 of file PredicateCorrelation.cpp.


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