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

LoopUnswitching. More...

#include <LoopUnswitching.hpp>

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

Classes

class  Statistics
 

Public Member Functions

 ~LoopUnswitching () noexcept override
 
 LoopUnswitching ()
 
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 Public Member Functions

static void CreateAndRun (rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector)
 

Static Private Member Functions

static void HandleRegion (rvsdg::Region &region)
 
static bool UnswitchLoop (rvsdg::ThetaNode &thetaNode)
 
static rvsdg::GammaNodeIsUnswitchable (const rvsdg::ThetaNode &thetaNode)
 
static void SinkNodesIntoGamma (rvsdg::GammaNode &gammaNode, const rvsdg::ThetaNode &thetaNode)
 
static std::vector< std::vector< rvsdg::Node * > > CollectPredicateNodes (const rvsdg::ThetaNode &thetaNode, const rvsdg::GammaNode &gammaNode)
 
static void CopyPredicateNodes (rvsdg::Region &target, rvsdg::SubstitutionMap &substitutionMap, const std::vector< std::vector< rvsdg::Node * >> &nodes)
 

Detailed Description

LoopUnswitching.

Definition at line 26 of file LoopUnswitching.hpp.

Constructor & Destructor Documentation

◆ ~LoopUnswitching()

jlm::llvm::LoopUnswitching::~LoopUnswitching ( )
overridedefaultnoexcept

◆ LoopUnswitching()

jlm::llvm::LoopUnswitching::LoopUnswitching ( )
inline

Definition at line 33 of file LoopUnswitching.hpp.

Member Function Documentation

◆ CollectPredicateNodes()

std::vector< std::vector< rvsdg::Node * > > jlm::llvm::LoopUnswitching::CollectPredicateNodes ( const rvsdg::ThetaNode thetaNode,
const rvsdg::GammaNode gammaNode 
)
staticprivate

Definition at line 120 of file LoopUnswitching.cpp.

◆ CopyPredicateNodes()

void jlm::llvm::LoopUnswitching::CopyPredicateNodes ( rvsdg::Region target,
rvsdg::SubstitutionMap substitutionMap,
const std::vector< std::vector< rvsdg::Node * >> &  nodes 
)
staticprivate

Definition at line 144 of file LoopUnswitching.cpp.

◆ CreateAndRun()

void jlm::llvm::LoopUnswitching::CreateAndRun ( rvsdg::RvsdgModule rvsdgModule,
util::StatisticsCollector statisticsCollector 
)
static

Definition at line 354 of file LoopUnswitching.cpp.

◆ HandleRegion()

void jlm::llvm::LoopUnswitching::HandleRegion ( rvsdg::Region region)
staticprivate

Definition at line 312 of file LoopUnswitching.cpp.

◆ IsUnswitchable()

rvsdg::GammaNode * jlm::llvm::LoopUnswitching::IsUnswitchable ( const rvsdg::ThetaNode thetaNode)
staticprivate

Definition at line 52 of file LoopUnswitching.cpp.

◆ Run()

void jlm::llvm::LoopUnswitching::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 340 of file LoopUnswitching.cpp.

◆ SinkNodesIntoGamma()

void jlm::llvm::LoopUnswitching::SinkNodesIntoGamma ( rvsdg::GammaNode gammaNode,
const rvsdg::ThetaNode thetaNode 
)
staticprivate

Definition at line 98 of file LoopUnswitching.cpp.

◆ UnswitchLoop()

bool jlm::llvm::LoopUnswitching::UnswitchLoop ( rvsdg::ThetaNode thetaNode)
staticprivate

Definition at line 157 of file LoopUnswitching.cpp.


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