|
Jlm
|
#include <MemoryStateOperations.hpp>


Public Member Functions | |
| ~MemoryStateSplitOperation () noexcept override | |
| MemoryStateSplitOperation (const size_t numResults) | |
| bool | operator== (const Operation &other) const noexcept override |
| std::string | debug_string () const override |
| std::unique_ptr< Operation > | copy () const override |
Public Member Functions inherited from jlm::rvsdg::SimpleOperation | |
| ~SimpleOperation () noexcept override | |
| SimpleOperation (std::vector< std::shared_ptr< const jlm::rvsdg::Type >> operands, std::vector< std::shared_ptr< const jlm::rvsdg::Type >> results) | |
| size_t | narguments () const noexcept |
| const std::shared_ptr< const rvsdg::Type > & | argument (size_t index) const noexcept |
| size_t | nresults () const noexcept |
| const std::shared_ptr< const rvsdg::Type > & | result (size_t index) const noexcept |
Public Member Functions inherited from jlm::rvsdg::Operation | |
| virtual | ~Operation () noexcept |
| virtual bool | operator== (const Operation &other) const noexcept=0 |
| bool | operator!= (const Operation &other) const noexcept |
Static Public Member Functions | |
| static std::optional< std::vector< rvsdg::Output * > > | NormalizeSingleResult (const MemoryStateSplitOperation &operation, const std::vector< rvsdg::Output * > &operands) |
| Removes the MemoryStateSplitOperation as it has only a single result, i.e., no splitting is performed. More... | |
| static std::optional< std::vector< rvsdg::Output * > > | NormalizeNestedSplits (const MemoryStateSplitOperation &operation, const std::vector< rvsdg::Output * > &operands) |
| Fuses nested splits into a single split. More... | |
| static std::optional< std::vector< rvsdg::Output * > > | NormalizeSplitMerge (const MemoryStateSplitOperation &operation, const std::vector< rvsdg::Output * > &operands) |
| Removes an idempotent split-merge pair. More... | |
| static rvsdg::SimpleNode & | CreateNode (rvsdg::Output &operand, const size_t numResults) |
| static std::vector< rvsdg::Output * > | Create (rvsdg::Output &operand, const size_t numResults) |
Additional Inherited Members | |
Protected Member Functions inherited from jlm::llvm::MemoryStateOperation | |
| MemoryStateOperation (size_t numOperands, size_t numResults) | |
A memory state split operation takes a single input state and splits it into multiple output states.
The operation has no equivalent LLVM instruction.
Definition at line 206 of file MemoryStateOperations.hpp.
|
overridedefaultnoexcept |
|
inlineexplicit |
Definition at line 211 of file MemoryStateOperations.hpp.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
Definition at line 225 of file MemoryStateOperations.cpp.
|
inlinestatic |
Definition at line 272 of file MemoryStateOperations.hpp.
|
inlinestatic |
Definition at line 266 of file MemoryStateOperations.hpp.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
Definition at line 219 of file MemoryStateOperations.cpp.
|
static |
Fuses nested splits into a single split.
o1 o2 o3 = MemoryStateSplitOperation i1 o4 o5 = MemoryStateSplitOperation o2 => o1 o4 o5 o3 = MemoryStateSplitOperation i1
Definition at line 244 of file MemoryStateOperations.cpp.
|
static |
Removes the MemoryStateSplitOperation as it has only a single result, i.e., no splitting is performed.
so = MemoryStateSplitOperation si ... = AnyOperation so => ... = AnyOperation si
Definition at line 231 of file MemoryStateOperations.cpp.
|
static |
Removes an idempotent split-merge pair.
o1 = MemoryStateMergeOperation i1 i2 i3 o2 o3 o4 = MemoryStateSplitOperation o1 ... = AnyOperation o2 o3 o4 => ... = AnyOperation i1 i2 i3
Definition at line 270 of file MemoryStateOperations.cpp.
|
overridenoexcept |
Definition at line 212 of file MemoryStateOperations.cpp.