6#ifndef JLM_RVSDG_DELTA_HPP
7#define JLM_RVSDG_DELTA_HPP
45 copy()
const override;
62 [[
nodiscard]]
const std::shared_ptr<const rvsdg::Type> &
68 [[
nodiscard]]
const std::shared_ptr<const rvsdg::Type> &
92 static inline std::unique_ptr<DeltaOperation>
94 std::shared_ptr<const rvsdg::Type>
type,
96 std::shared_ptr<const rvsdg::Type>
reftype)
103 std::shared_ptr<const rvsdg::Type>
type_;
ContextVar MapInputContextVar(const rvsdg::Input &input) const noexcept
Maps input to context variable.
rvsdg::Input & result() const noexcept
std::vector< ContextVar > GetContextVars() const noexcept
Gets all bound context variables.
ContextVar MapBinderContextVar(const rvsdg::Output &output) const noexcept
Maps bound variable reference to context variable.
~DeltaNode() noexcept override
size_t RemoveDeltaInputsWhere(const F &match)
ContextVar AddContextVar(jlm::rvsdg::Output &origin)
Adds a context/free variable to the delta node.
const DeltaOperation & GetOperation() const noexcept override
std::unique_ptr< DeltaOperation > Operation_
rvsdg::Region * subregion() const noexcept
size_t PruneDeltaInputs()
bool constant() const noexcept
rvsdg::Output & finalize(rvsdg::Output *result)
static DeltaNode * Create(rvsdg::Region *parent, std::unique_ptr< DeltaOperation > op)
rvsdg::Output & output() const noexcept
DeltaNode * copy(rvsdg::Region *region, const std::vector< jlm::rvsdg::Output * > &operands) const override
const std::shared_ptr< const rvsdg::Type > & Type() const noexcept
~DeltaOperation() noexcept override
std::string debug_string() const override
const rvsdg::Type & type() const noexcept
DeltaOperation & operator=(const DeltaOperation &)=delete
DeltaOperation & operator=(DeltaOperation &&)=delete
DeltaOperation(const DeltaOperation &other)=default
const std::shared_ptr< const rvsdg::Type > & ReferenceType() const noexcept
std::shared_ptr< const rvsdg::Type > reftype_
DeltaOperation(DeltaOperation &&other) noexcept=default
bool constant() const noexcept
static std::unique_ptr< DeltaOperation > Create(std::shared_ptr< const rvsdg::Type > type, bool constant, std::shared_ptr< const rvsdg::Type > reftype)
Creates parameterized delta operation.
std::shared_ptr< const rvsdg::Type > type_
bool operator==(const Operation &other) const noexcept override
std::unique_ptr< Operation > copy() const override
size_t RemoveInputs(const util::HashSet< size_t > &indices)
rvsdg::Region * region() const noexcept
Represent acyclic RVSDG subgraphs.
size_t RemoveArguments(const util::HashSet< size_t > &indices)
rvsdg::Region * subregion(size_t index) const noexcept
StructuralInput * input(size_t index) const noexcept
bool insert(ItemType item)
static std::vector< jlm::rvsdg::Output * > operands(const Node *node)
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.
rvsdg::Input * input
Input variable bound into delta node.
rvsdg::Output * inner
Access to bound object in subregion.