|
Jlm
|
#include <MemoryStateOperations.hpp>


Public Member Functions | |
| ~LambdaExitMemoryStateMergeOperation () noexcept override | |
| LambdaExitMemoryStateMergeOperation (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::Input * | tryMapMemoryNodeIdToInput (const rvsdg::SimpleNode &node, MemoryNodeId memoryNodeId) |
| static MemoryNodeId | mapInputToMemoryNodeId (const rvsdg::Input &input) |
| static std::optional< std::vector< rvsdg::Output * > > | NormalizeLoadFromAlloca (const LambdaExitMemoryStateMergeOperation &operation, const std::vector< rvsdg::Output * > &operands) |
| static std::optional< std::vector< rvsdg::Output * > > | NormalizeStoreToAlloca (const LambdaExitMemoryStateMergeOperation &operation, const std::vector< rvsdg::Output * > &operands) |
| static std::optional< std::vector< rvsdg::Output * > > | NormalizeAlloca (const LambdaExitMemoryStateMergeOperation &operation, const std::vector< rvsdg::Output * > &operands) |
| static rvsdg::Node & | CreateNode (rvsdg::Region ®ion, const std::vector< rvsdg::Output * > &operands, const std::vector< MemoryNodeId > &memoryNodeIds) |
Private Attributes | |
| util::BijectiveMap< MemoryNodeId, size_t > | MemoryNodeIdToIndex_ {} |
Additional Inherited Members | |
Protected Member Functions inherited from jlm::llvm::MemoryStateOperation | |
| MemoryStateOperation (size_t numOperands, size_t numResults) | |
A lambda exit memory state merge operation takes multiple states as input and merges them together to a single output state. In contrast to the MemoryStateMergeOperation, this operation is allowed to have zero input states. The operation's output is required to be connected to the memory state result of a lambda.
The operation has no equivalent LLVM instruction.
Definition at line 382 of file MemoryStateOperations.hpp.
|
overridedefaultnoexcept |
|
explicit |
Definition at line 423 of file MemoryStateOperations.cpp.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
Definition at line 450 of file MemoryStateOperations.cpp.
|
inlinestatic |
Definition at line 485 of file MemoryStateOperations.hpp.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
Definition at line 444 of file MemoryStateOperations.cpp.
|
inlinenoexcept |
Definition at line 402 of file MemoryStateOperations.hpp.
|
static |
Maps the input a LambdaExitMemoryStateMergeOperation node to the respective MemoryNodeId.
| input | A input of LambdaExitMemoryStateMergeOperation node. |
Definition at line 478 of file MemoryStateOperations.cpp.
|
static |
Performs the following transformation:
a, s1 = AllocaOperation ... ... = LambdaExitMemoryStateMergeOperation s1 ... sn => a, s1 = AllocaOperation ... s2 = UndefValueOperation ... = LambdaExitMemoryStateMergeOperation s2 ... sn
Definition at line 567 of file MemoryStateOperations.cpp.
|
static |
Performs the following transformation:
a, s1 = AllocaOperation ... v, s2 = LoadOperation a s1 ... = LambdaExitMemoryStateMergeOperation s2 ... sn => a, s1 = AllocaOperation ... v, s2 = LoadOperation a s1 ... = LambdaExitMemoryStateMergeOperation s1 ... sn
Definition at line 488 of file MemoryStateOperations.cpp.
|
static |
Performs the following transformation:
a, s1 = AllocaOperation ... s2 = StoreOperation a v s1 ... = LambdaExitMemoryStateMergeOperation s2 ... sn => a, s1 = AllocaOperation ... s2 = StoreOperation a v s1 ... = LambdaExitMemoryStateMergeOperation s1 ... sn
Definition at line 527 of file MemoryStateOperations.cpp.
|
overridenoexcept |
Definition at line 437 of file MemoryStateOperations.cpp.
|
static |
Maps a memory node identifier to the respective input of a LambdaExitMemoryStateMergeOperation node.
| node | A LambdaExitMemoryStateMergeOperation node. |
| memoryNodeId | A memory node identifier. |
Definition at line 456 of file MemoryStateOperations.cpp.
|
private |
Definition at line 496 of file MemoryStateOperations.hpp.