21 std::unique_ptr<SimpleOperation> operation,
22 const std::vector<jlm::rvsdg::Output *> &
operands)
24 Operation_(std::
move(operation))
28 "Argument error - expected ",
84std::optional<std::vector<rvsdg::Output *>>
88 const std::vector<rvsdg::Output *> &
operands)
99 for (
auto & node : region.
TopNodes())
rvsdg::Region * region() const noexcept
InputIteratorRange Inputs() noexcept
NodeOutput * addOutput(std::unique_ptr< NodeOutput > output)
size_t noutputs() const noexcept
NodeInput * addInput(std::unique_ptr< NodeInput > input, bool notifyRegion)
virtual std::string debug_string() const =0
Represent acyclic RVSDG subgraphs.
void notifyNodeDestroy(Node *node)
TopNodeRange TopNodes() noexcept
void notifyNodeCreate(Node *node)
static SimpleNode & Create(Region ®ion, std::unique_ptr< Operation > operation, const std::vector< rvsdg::Output * > &operands)
SimpleNode(rvsdg::Region ®ion, std::unique_ptr< SimpleOperation > operation, const std::vector< jlm::rvsdg::Output * > &operands)
const SimpleOperation & GetOperation() const noexcept override
std::unique_ptr< SimpleOperation > Operation_
Node * copy(Region *region, const std::vector< Output * > &operands) const override
std::string DebugString() const override
NodeInput * input(size_t index) const noexcept
NodeOutput * output(size_t index) const noexcept
size_t nresults() const noexcept
size_t narguments() const noexcept
static std::vector< jlm::rvsdg::Output * > operands(const Node *node)
static std::vector< jlm::rvsdg::Output * > outputs(const Node *node)
std::optional< std::vector< rvsdg::Output * > > NormalizeSimpleOperationCommonNodeElimination(Region ®ion, const SimpleOperation &operation, const std::vector< rvsdg::Output * > &operands)
Performs common node elimination for a given operation and operands in a region.
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.
static std::string strfmt(Args... args)