6#ifndef JLM_LLVM_IR_OPERATORS_IOBARRIER_HPP
7#define JLM_LLVM_IR_OPERATORS_IOBARRIER_HPP
54 [[nodiscard]]
const std::shared_ptr<const rvsdg::Type> &
61 operator==(
const Operation & other)
const noexcept override;
66 std::unique_ptr<Operation>
67 copy()
const override;
73 const auto input = node.input(0);
81 const auto input = node.input(1);
140 operator==(
const Operation & other)
const noexcept override;
145 std::unique_ptr<Operation>
146 copy()
const override;
148 [[nodiscard]] std::size_t
158 const auto input = node.input(0);
167 const auto output = node.output(0);
176 const auto input = node.input(1);
185 const std::size_t dereferenceableSize)
188 { &address, &ioState },
189 dereferenceableSize);
207 static std::optional<std::vector<rvsdg::Output *>>
210 const std::vector<rvsdg::Output *> & operands);
static rvsdg::Input & getIOStateInput(const rvsdg::Node &node) noexcept
const std::shared_ptr< const rvsdg::Type > & Type() const noexcept
std::string debug_string() const override
bool operator==(const Operation &other) const noexcept override
static rvsdg::SimpleNode & createNode(rvsdg::Output &value, rvsdg::Output &ioState)
~IOBarrierOperation() noexcept override
static rvsdg::Input & BarredInput(const rvsdg::Node &node) noexcept
std::unique_ptr< Operation > copy() const override
static std::shared_ptr< const IOStateType > Create()
static std::optional< std::vector< rvsdg::Output * > > normalizeNestedMemoryHoistBarriers(const MemoryHoistBarrierOperation &lowerMhbOp, const std::vector< rvsdg::Output * > &operands)
bool operator==(const Operation &other) const noexcept override
static rvsdg::Output & getAddressOutput(const rvsdg::Node &node) noexcept
std::size_t dereferenceableSize_
static rvsdg::SimpleNode & createNode(rvsdg::Output &address, rvsdg::Output &ioState, const std::size_t dereferenceableSize)
static rvsdg::Input & getAddressInput(const rvsdg::Node &node) noexcept
std::unique_ptr< Operation > copy() const override
~MemoryHoistBarrierOperation() noexcept override
std::size_t getDereferenceableSize() const noexcept
std::string debug_string() const override
static rvsdg::Input & getIOStateInput(const rvsdg::Node &node) noexcept
static std::shared_ptr< const PointerType > Create()
const std::shared_ptr< const rvsdg::Type > & Type() const noexcept
const std::shared_ptr< const rvsdg::Type > & result(size_t index) const noexcept
SimpleOperation(std::vector< std::shared_ptr< const jlm::rvsdg::Type > > operands, std::vector< std::shared_ptr< const jlm::rvsdg::Type > > results)
Global memory state passed between functions.
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.