|
Jlm
|
#include <MemoryStateOperations.hpp>


Public Member Functions | |
| ~MemoryStateMergeOperation () noexcept override | |
| MemoryStateMergeOperation (size_t numOperands) | |
| 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 * > > | NormalizeSingleOperand (const MemoryStateMergeOperation &operation, const std::vector< rvsdg::Output * > &operands) |
| Removes the MemoryStateMergeOperation as it has only a single operand, i.e., no merging is performed. More... | |
| static std::optional< std::vector< rvsdg::Output * > > | NormalizeDuplicateOperands (const MemoryStateMergeOperation &operation, const std::vector< rvsdg::Output * > &operands) |
| Removes duplicated operands from the MemoryStateMergeOperation. More... | |
| static std::optional< std::vector< rvsdg::Output * > > | NormalizeNestedMerges (const MemoryStateMergeOperation &operation, const std::vector< rvsdg::Output * > &operands) |
| Fuses nested merges into a single merge. More... | |
| static std::optional< std::vector< rvsdg::Output * > > | NormalizeMergeSplit (const MemoryStateMergeOperation &operation, const std::vector< rvsdg::Output * > &operands) |
| Fuses nested splits into a single merge. More... | |
| static rvsdg::SimpleNode & | CreateNode (const std::vector< rvsdg::Output * > &operands) |
| static rvsdg::Output * | Create (const std::vector< rvsdg::Output * > &operands) |
| static std::unique_ptr< ThreeAddressCode > | Create (const std::vector< const Variable * > &operands) |
Additional Inherited Members | |
Protected Member Functions inherited from jlm::llvm::MemoryStateOperation | |
| MemoryStateOperation (size_t numOperands, size_t numResults) | |
A memory state merge operation takes multiple states as input and merges them together to a single output state.
The operation has no equivalent LLVM instruction.
Definition at line 38 of file MemoryStateOperations.hpp.
|
overridedefaultnoexcept |
|
inlineexplicit |
Definition at line 43 of file MemoryStateOperations.hpp.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
Definition at line 32 of file MemoryStateOperations.cpp.
|
inlinestatic |
Definition at line 120 of file MemoryStateOperations.hpp.
|
inlinestatic |
Definition at line 114 of file MemoryStateOperations.hpp.
|
inlinestatic |
Definition at line 108 of file MemoryStateOperations.hpp.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
Definition at line 26 of file MemoryStateOperations.cpp.
|
static |
Removes duplicated operands from the MemoryStateMergeOperation.
so = MemoryStateMergeOperation si0 si0 si1 si1 si2 => so = MemoryStateMergeOperation si0 si1 si2
Definition at line 49 of file MemoryStateOperations.cpp.
|
static |
Fuses nested splits into a single merge.
o1, o2, o3 = MemoryStateSplitOperation i1 o4 = MemoryStateMergeOperation i2 o1 o2 o3 i3 => o4 = MemoryStateMergeOperation i2 i1 i1 i1 i3
Definition at line 108 of file MemoryStateOperations.cpp.
|
static |
Fuses nested merges into a single merge.
o1 = MemoryStateMergeOperation i1 i2 o2 = MemoryStateMergeOperation o1 i3 => o2 = MemoryStateMergeOperation i1 i2 i3
Definition at line 93 of file MemoryStateOperations.cpp.
|
static |
Removes the MemoryStateMergeOperation as it has only a single operand, i.e., no merging is performed.
so = MemoryStateMergeOperation si ... = AnyOperation so => ... = AnyOperation si
Definition at line 38 of file MemoryStateOperations.cpp.
|
overridenoexcept |
Definition at line 19 of file MemoryStateOperations.cpp.