|
Jlm
|
#include <ScalarEvolution.hpp>


Classes | |
| class | Context |
| class | Statistics |
Public Types | |
| typedef util::HashSet< const rvsdg::Output * > | InductionVariableSet |
| typedef std::unordered_map< const rvsdg::Output *, std::unordered_map< const rvsdg::Output *, int > > | IVDependencyGraph |
Public Member Functions | |
| ~ScalarEvolution () noexcept override | |
| ScalarEvolution () | |
| ScalarEvolution (const ScalarEvolution &)=delete | |
| ScalarEvolution (ScalarEvolution &&)=delete | |
| ScalarEvolution & | operator= (const ScalarEvolution &)=delete |
| ScalarEvolution & | operator= (ScalarEvolution &&)=delete |
| void | Run (rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override |
| Perform RVSDG transformation. More... | |
| std::unordered_map< const rvsdg::Output *, std::unique_ptr< SCEVChainRecurrence > > | PerformSCEVAnalysis (const rvsdg::ThetaNode &thetaNode) |
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 bool | StructurallyEqual (const SCEV &a, const SCEV &b) |
Private Member Functions | |
| void | AnalyzeRegion (const rvsdg::Region ®ion) |
| std::unique_ptr< SCEV > | GetOrCreateSCEVForOutput (const rvsdg::Output &output) |
| std::optional< const SCEV * > | TryGetSCEVForOutput (const rvsdg::Output &output) |
| IVDependencyGraph | CreateDependencyGraph (const rvsdg::ThetaNode &thetaNode) const |
| std::unique_ptr< SCEVChainRecurrence > | CreateChainRecurrence (const rvsdg::Output &IV, const SCEV &scevTree, const rvsdg::ThetaNode &thetaNode) |
Static Private Member Functions | |
| static std::unordered_map< const rvsdg::Output *, int > | FindDependenciesForSCEV (const SCEV ¤tSCEV, const rvsdg::Output ¤tIV) |
| static std::vector< const rvsdg::Output * > | TopologicalSort (const IVDependencyGraph &dependencyGraph) |
| static std::unique_ptr< SCEV > | ApplyFolding (SCEV *lhsOperand, SCEV *rhsOperand) |
| static bool | IsValidInductionVariable (const rvsdg::Output &variable, IVDependencyGraph &dependencyGraph) |
| static bool | IsUnknown (const SCEVChainRecurrence &chrec) |
| static bool | HasCycleThroughOthers (const rvsdg::Output ¤tIV, const rvsdg::Output &originalIV, IVDependencyGraph &dependencyGraph, std::unordered_set< const rvsdg::Output * > &visited, std::unordered_set< const rvsdg::Output * > &recursionStack) |
Private Attributes | |
| std::unordered_map< const rvsdg::ThetaNode *, InductionVariableSet > | InductionVariableMap_ |
| std::unordered_map< const rvsdg::Output *, std::unique_ptr< SCEV > > | UniqueSCEVs_ |
| std::unordered_map< const rvsdg::Output *, std::unique_ptr< SCEVChainRecurrence > > | ChainRecurrenceMap_ |
| std::unique_ptr< Context > | Context_ |
Definition at line 358 of file ScalarEvolution.hpp.
| typedef util::HashSet<const rvsdg::Output *> jlm::llvm::ScalarEvolution::InductionVariableSet |
Definition at line 365 of file ScalarEvolution.hpp.
| typedef std::unordered_map<const rvsdg::Output *, std::unordered_map<const rvsdg::Output *, int> > jlm::llvm::ScalarEvolution::IVDependencyGraph |
Definition at line 369 of file ScalarEvolution.hpp.
|
overridedefaultnoexcept |
| jlm::llvm::ScalarEvolution::ScalarEvolution | ( | ) |
Definition at line 129 of file ScalarEvolution.cpp.
|
delete |
|
delete |
|
private |
Definition at line 166 of file ScalarEvolution.cpp.
|
staticprivate |
Definition at line 535 of file ScalarEvolution.cpp.
|
private |
Definition at line 471 of file ScalarEvolution.cpp.
|
private |
Definition at line 284 of file ScalarEvolution.cpp.
|
staticprivate |
Definition at line 250 of file ScalarEvolution.cpp.
|
private |
Definition at line 204 of file ScalarEvolution.cpp.
|
staticprivate |
Definition at line 655 of file ScalarEvolution.cpp.
|
staticprivate |
Checks the operands of the given chrec to see if any of them are unknown.
| chrec | the chain recurrence to be checked |
Definition at line 153 of file ScalarEvolution.cpp.
|
staticprivate |
Definition at line 640 of file ScalarEvolution.cpp.
|
delete |
|
delete |
| std::unordered_map< const rvsdg::Output *, std::unique_ptr< SCEVChainRecurrence > > jlm::llvm::ScalarEvolution::PerformSCEVAnalysis | ( | const rvsdg::ThetaNode & | thetaNode | ) |
Definition at line 366 of file ScalarEvolution.cpp.
|
overridevirtual |
Perform RVSDG transformation.
| module | RVSDG module the transformation is performed on. |
| statisticsCollector | Statistics collector for collecting transformation statistics. |
Implements jlm::rvsdg::Transformation.
Definition at line 136 of file ScalarEvolution.cpp.
Definition at line 690 of file ScalarEvolution.cpp.
|
staticprivate |
Definition at line 303 of file ScalarEvolution.cpp.
|
private |
Definition at line 196 of file ScalarEvolution.cpp.
|
private |
Definition at line 398 of file ScalarEvolution.hpp.
|
private |
Definition at line 447 of file ScalarEvolution.hpp.
|
private |
Definition at line 395 of file ScalarEvolution.hpp.
|
private |
Definition at line 396 of file ScalarEvolution.hpp.