6 #ifndef JLM_LLVM_OPT_LOOPUNSWITCHING_HPP
7 #define JLM_LLVM_OPT_LOOPUNSWITCHING_HPP
16 class SubstitutionMap;
56 static std::vector<std::vector<rvsdg::Node *>>
63 const std::vector<std::vector<rvsdg::Node *>> & nodes);
void Run(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
static rvsdg::GammaNode * IsUnswitchable(const rvsdg::ThetaNode &thetaNode)
static void HandleRegion(rvsdg::Region ®ion)
static void SinkNodesIntoGamma(rvsdg::GammaNode &gammaNode, const rvsdg::ThetaNode &thetaNode)
static void CreateAndRun(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector)
static void CopyPredicateNodes(rvsdg::Region &target, rvsdg::SubstitutionMap &substitutionMap, const std::vector< std::vector< rvsdg::Node * >> &nodes)
static std::vector< std::vector< rvsdg::Node * > > CollectPredicateNodes(const rvsdg::ThetaNode &thetaNode, const rvsdg::GammaNode &gammaNode)
~LoopUnswitching() noexcept override
static bool UnswitchLoop(rvsdg::ThetaNode &thetaNode)
Conditional operator / pattern matching.
Represent acyclic RVSDG subgraphs.
Global memory state passed between functions.