|
Jlm
|
#include <MemCpy.hpp>


Public Member Functions | |
| ~MemCpyVolatileOperation () noexcept override | |
| MemCpyVolatileOperation (std::shared_ptr< const rvsdg::Type > lengthType, size_t numMemoryStates) | |
| bool | operator== (const Operation &other) const noexcept override |
| std::string | debug_string () const override |
| std::unique_ptr< Operation > | copy () const override |
| size_t | NumMemoryStates () const noexcept override |
Public Member Functions inherited from jlm::llvm::MemCpyOperation | |
| const rvsdg::BitType & | LengthType () 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 std::unique_ptr< llvm::ThreeAddressCode > | CreateThreeAddressCode (const Variable &destination, const Variable &source, const Variable &length, const Variable &ioState, const std::vector< const Variable * > &memoryStates) |
| static rvsdg::SimpleNode & | CreateNode (rvsdg::Output &destination, rvsdg::Output &source, rvsdg::Output &length, rvsdg::Output &ioState, const std::vector< rvsdg::Output * > &memoryStates) |
Static Public Member Functions inherited from jlm::llvm::MemCpyOperation | |
| static rvsdg::Input & | destinationInput (const rvsdg::Node &node) noexcept |
| static rvsdg::Input & | sourceInput (const rvsdg::Node &node) noexcept |
| static rvsdg::Input & | countInput (const rvsdg::Node &node) noexcept |
| static rvsdg::Input & | mapMemoryStateOutputToInput (const rvsdg::Output &output) |
| static rvsdg::Output & | mapMemoryStateInputToOutput (const rvsdg::Input &input) |
Static Private Member Functions | |
| static std::vector< std::shared_ptr< const rvsdg::Type > > | CreateOperandTypes (std::shared_ptr< const rvsdg::Type > lengthType, size_t numMemoryStates) |
| static std::vector< std::shared_ptr< const rvsdg::Type > > | CreateResultTypes (size_t numMemoryStates) |
Additional Inherited Members | |
Protected Member Functions inherited from jlm::llvm::MemCpyOperation | |
| MemCpyOperation (const std::vector< std::shared_ptr< const rvsdg::Type >> &operandTypes, const std::vector< std::shared_ptr< const rvsdg::Type >> &resultTypes) | |
Represents a volatile LLVM memcpy intrinsic
In contrast to LLVM, a volatile memcpy requires in an RVSDG setting an I/O state as it incorporates externally visible side-effects. This I/O state allows the volatile memcpy operation to be sequentialized with respect to other volatile memory accesses and I/O operations. This additional I/O state is the main reason why volatile memcpys are modeled as its own operation and volatile is not just a flag at the normal MemCpyNonVolatileOperation.
Definition at line 247 of file MemCpy.hpp.
|
overridedefaultnoexcept |
|
inline |
Definition at line 252 of file MemCpy.hpp.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
Definition at line 55 of file MemCpy.cpp.
|
inlinestatic |
Definition at line 286 of file MemCpy.hpp.
|
inlinestaticprivate |
Definition at line 304 of file MemCpy.hpp.
|
inlinestaticprivate |
Definition at line 316 of file MemCpy.hpp.
|
inlinestatic |
Definition at line 271 of file MemCpy.hpp.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
Definition at line 49 of file MemCpy.cpp.
|
overridevirtualnoexcept |
Implements jlm::llvm::MemCpyOperation.
Definition at line 61 of file MemCpy.cpp.
|
overridenoexcept |
Definition at line 42 of file MemCpy.cpp.