|
Jlm
|
#include <MemoryStateOperations.hpp>


Public Member Functions | |
| ~LambdaEntryMemoryStateSplitOperation () noexcept override | |
| LambdaEntryMemoryStateSplitOperation (const std::vector< MemoryNodeId > &memoryNodeIds) | |
| bool | operator== (const Operation &other) const noexcept override |
| std::string | debug_string () const override |
| std::unique_ptr< Operation > | copy () const override |
| std::vector< MemoryNodeId > | getMemoryNodeIds () const noexcept |
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 rvsdg::Output * | tryMapMemoryNodeIdToOutput (const rvsdg::SimpleNode &node, MemoryNodeId memoryNodeId) |
| static MemoryNodeId | mapOutputToMemoryNodeId (const rvsdg::Output &output) |
| static std::optional< std::vector< rvsdg::Output * > > | NormalizeCallEntryMemoryStateMerge (const LambdaEntryMemoryStateSplitOperation &lambdaEntrySplitOperation, const std::vector< rvsdg::Output * > &operands) |
| static rvsdg::SimpleNode & | CreateNode (rvsdg::Output &operand, std::vector< MemoryNodeId > memoryNodeIds) |
Private Attributes | |
| util::BijectiveMap< MemoryNodeId, size_t > | memoryNodeIdToIndexMap_ {} |
Additional Inherited Members | |
Protected Member Functions inherited from jlm::llvm::MemoryStateOperation | |
| MemoryStateOperation (size_t numOperands, size_t numResults) | |
A lambda entry memory state split operation takes a single input state and splits it into multiple output states. In contrast to the MemoryStateSplitOperation, this operation is allowed to have zero output states. The operation's input is required to be connected to the memory state argument of a lambda.
The operation has no equivalent LLVM instruction.
Definition at line 288 of file MemoryStateOperations.hpp.
|
overridedefaultnoexcept |
|
explicit |
Definition at line 309 of file MemoryStateOperations.cpp.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
Definition at line 337 of file MemoryStateOperations.cpp.
|
inlinestatic |
Definition at line 361 of file MemoryStateOperations.hpp.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
Definition at line 331 of file MemoryStateOperations.cpp.
|
inlinenoexcept |
Definition at line 308 of file MemoryStateOperations.hpp.
|
static |
Maps the output a LambdaEntryMemoryStateSplitOperation node to the respective MemoryNodeId.
| output | A output of LambdaEntryMemoryStateSplitOperation node. |
Definition at line 364 of file MemoryStateOperations.cpp.
|
static |
Perform the following transformation:
oN = CallEntryMemoryStateMergeOperation o0 ... oK oX ... oZ = LambdaEntryMemoryStateSplitOperation oN ... = AnyOp oX ... oZ => ... = AnyOp o0 ... oK
This transformation can occur after function inlining, i.e., a CallOperation has been replaced with the body of its respective rvsdg::LambdaNode.
Definition at line 374 of file MemoryStateOperations.cpp.
|
overridenoexcept |
Definition at line 323 of file MemoryStateOperations.cpp.
|
static |
Maps a memory node identifier to the respective output of a LambdaEntryMemoryStateSplitOperation node.
| node | A LambdaEntryMemoryStateSplitOperation node. |
| memoryNodeId | A memory node identifier. |
Definition at line 343 of file MemoryStateOperations.cpp.
|
private |
Definition at line 369 of file MemoryStateOperations.hpp.