7#ifndef JLM_RVSDG_OPERATION_HPP
8#define JLM_RVSDG_OPERATION_HPP
41 return !(*
this ==
other);
50 std::is_base_of<Operation, T>::value,
51 "Template parameter T must be derived from jlm::rvsdg::operation.");
53 return dynamic_cast<const T *
>(&operation) !=
nullptr;
virtual ~Operation() noexcept
virtual bool operator==(const Operation &other) const noexcept=0
virtual std::unique_ptr< Operation > copy() const =0
virtual std::string debug_string() const =0
const std::shared_ptr< const rvsdg::Type > & argument(size_t index) const noexcept
const std::shared_ptr< const rvsdg::Type > & result(size_t index) const noexcept
std::vector< std::shared_ptr< const rvsdg::Type > > operands_
size_t nresults() const noexcept
std::vector< std::shared_ptr< const rvsdg::Type > > results_
~SimpleOperation() noexcept override
size_t narguments() const noexcept
static bool is(const jlm::rvsdg::Input &input) noexcept
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.