|
Jlm
|
#include <node.hpp>


Public Types | |
| using | Id = uint64_t |
| using | InputIteratorRange = util::IteratorRange< Input::Iterator > |
| using | InputConstIteratorRange = util::IteratorRange< Input::ConstIterator > |
| using | OutputIteratorRange = util::IteratorRange< Output::Iterator > |
| using | OutputConstIteratorRange = util::IteratorRange< Output::ConstIterator > |
| typedef util::IntrusiveListAccessor< Node, &Node::region_node_list_anchor_ > | region_node_list_accessor |
| typedef util::IntrusiveListAccessor< Node, &Node::region_top_node_list_anchor_ > | region_top_node_list_accessor |
| typedef util::IntrusiveListAccessor< Node, &Node::region_bottom_node_list_anchor_ > | region_bottom_node_list_accessor |
Public Member Functions | |
| virtual | ~Node () |
| Node (Region *region) | |
| Id | GetNodeId () const noexcept |
| virtual const Operation & | GetOperation () const noexcept=0 |
| size_t | ninputs () const noexcept |
| NodeInput * | input (size_t index) const noexcept |
| InputIteratorRange | Inputs () noexcept |
| InputConstIteratorRange | Inputs () const noexcept |
| size_t | noutputs () const noexcept |
| NodeOutput * | output (size_t index) const noexcept |
| OutputIteratorRange | Outputs () noexcept |
| OutputConstIteratorRange | Outputs () const noexcept |
| bool | IsDead () const noexcept |
| Determines whether the node is dead. More... | |
| std::size_t | numSuccessors () const noexcept |
| virtual std::string | DebugString () const =0 |
| size_t | RemoveInputs (const util::HashSet< size_t > &indices) |
| size_t | RemoveOutputs (const util::HashSet< size_t > &indices) |
| Graph * | graph () const noexcept |
| rvsdg::Region * | region () const noexcept |
| virtual Node * | copy (rvsdg::Region *region, const std::vector< jlm::rvsdg::Output * > &operands) const |
| virtual Node * | copy (rvsdg::Region *region, SubstitutionMap &smap) const =0 |
| Copy a node with substitutions. More... | |
Protected Member Functions | |
| NodeInput * | addInput (std::unique_ptr< NodeInput > input, bool notifyRegion) |
| NodeOutput * | addOutput (std::unique_ptr< NodeOutput > output) |
Private Attributes | |
| util::IntrusiveListAnchor< Node > | region_node_list_anchor_ {} |
| util::IntrusiveListAnchor< Node > | region_top_node_list_anchor_ {} |
| util::IntrusiveListAnchor< Node > | region_bottom_node_list_anchor_ {} |
| Id | Id_ |
| Region * | region_ |
| std::vector< std::unique_ptr< NodeInput > > | inputs_ |
| std::vector< std::unique_ptr< NodeOutput > > | outputs_ |
| std::size_t | numSuccessors_ = 0 |
Friends | |
| class | Output |
| using jlm::rvsdg::Node::Id = uint64_t |
|
protected |
Adds the given input to the node's inputs. Invalidates existing iterators to the node's inputs.
| input | an owned pointer to the new input |
| notifyRegion | If true, the region is informed about the new input. This should be false if the node has not yet notified the region about being created, i.e., this function is being called from the node's constructor. |
|
inlineprotected |
|
virtual |
Reimplemented in jlm::rvsdg::LambdaNode, and jlm::rvsdg::DeltaNode.
|
pure virtual |
Copy a node with substitutions.
| region | Target region to create node in |
| smap | Operand substitutions |
Create a new node that is semantically equivalent to an existing node. The newly created node will use the same operands as the existing node unless there is a substitution registered for a particular operand.
The given substitution map is updated so that all outputs of the original node will be substituted by corresponding outputs of the newly created node in subsequent copy operations.
Implemented in jlm::rvsdg::ThetaNode, jlm::rvsdg::PhiNode, jlm::rvsdg::LambdaNode, jlm::rvsdg::DeltaNode, jlm::hls::LoopNode, jlm::rvsdg::TestStructuralNode, jlm::rvsdg::SimpleNode, and jlm::rvsdg::GammaNode.
|
pure virtual |
Implemented in jlm::rvsdg::StructuralNode, and jlm::rvsdg::SimpleNode.
|
inlinenoexcept |
|
pure virtualnoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
| size_t jlm::rvsdg::Node::RemoveInputs | ( | const util::HashSet< size_t > & | indices | ) |
Removes all inputs that have an index in indices.
| indices | The indices of the inputs that should be removed. |
| size_t jlm::rvsdg::Node::RemoveOutputs | ( | const util::HashSet< size_t > & | indices | ) |
Removes all outputs that have no users and an index contained in indices.
| indices | The indices of the outputs that should be removed. |
|
private |
|
private |
|
private |
|
private |
|
private |