19 auto [addrQueueNode, addrQueueOperation] =
20 rvsdg::TryGetSimpleNodeAndOptionalOp<AddressQueueOperation>(*node->
output(0));
21 JLM_ASSERT(rvsdg::is<AddressQueueOperation>(node));
28 auto [bufferNode, bufferOperation] =
29 rvsdg::TryGetSimpleNodeAndOptionalOp<BufferOperation>(*node->
output(0)->
Users().
begin());
30 JLM_ASSERT(bufferOperation && bufferOperation->Capacity() >= addrQueueOperation->capacity);
38 if (rvsdg::is<rvsdg::StructuralOperation>(node))
40 if (
auto ln =
dynamic_cast<LoopNode *
>(node))
46 throw util::Error(
"There should be only simple nodes and loop nodes");
49 for (
size_t i = 0; i < node->noutputs(); i++)
51 if (node->output(i)->nusers() == 0)
55 else if (node->output(i)->nusers() > 1)
60 if (rvsdg::is<AddressQueueOperation>(node))
70 auto & graph = rm.
Rvsdg();
72 if (root->numNodes() != 1)
74 throw util::Error(
"Root should have only one node now");
~RhlsVerification() noexcept override
void Run(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
Region & GetRootRegion() const noexcept
NodeInput * input(size_t index) const noexcept
NodeOutput * output(size_t index) const noexcept
Represent acyclic RVSDG subgraphs.
rvsdg::Output * FindSourceNode(rvsdg::Output *out)
static void check_rhls(rvsdg::Region *sr)
static void CheckAddrQueue(rvsdg::Node *node)