Jlm
Loading...
Searching...
No Matches
Public Attributes | Private Member Functions | List of all members
jlm::mlir::IOBarrierTest Class Referencefinal

IOBarrierTest class. More...

#include <TestRvsdgs.hpp>

Inheritance diagram for jlm::mlir::IOBarrierTest:
Inheritance graph
[legend]
Collaboration diagram for jlm::mlir::IOBarrierTest:
Collaboration graph
[legend]

Public Attributes

jlm::rvsdg::LambdaNode * lambda
 
jlm::rvsdg::SimpleNode * barrier
 
jlm::rvsdg::SimpleNode * add
 

Private Member Functions

std::unique_ptr< jlm::llvm::LlvmRvsdgModule > SetupRvsdg () override
 Create RVSDG for this test.
 

Additional Inherited Members

- Public Member Functions inherited from jlm::llvm::RvsdgTest
virtual ~RvsdgTest ()=default
 
jlm::llvm::LlvmRvsdgModule & module ()
 
const rvsdg::Graph & graph ()
 
void InitializeTest ()
 

Detailed Description

IOBarrierTest class.

This class sets up an RVSDG representing the following function:

uint32_t f(uint32_t x)
{
opaque(); // performs an externally visible side-effect
return x + 1;
}

The barrier sequentializes the addition after the side-effect by routing the operand through it. The I/O state that carries the dependency is threaded through the lambda. Since this operation has no LLVM counterpart it is only defined by the RVSDG, so it needs a graph of its own.

See also
StoreVolatileTest

Definition at line 292 of file TestRvsdgs.hpp.

Member Function Documentation

◆ SetupRvsdg()

std::unique_ptr< jlm::llvm::LlvmRvsdgModule > jlm::mlir::IOBarrierTest::SetupRvsdg ( )
overrideprivatevirtual

Create RVSDG for this test.

Implements jlm::llvm::RvsdgTest.

Definition at line 403 of file TestRvsdgs.cpp.

Member Data Documentation

◆ add

jlm::rvsdg::SimpleNode* jlm::mlir::IOBarrierTest::add

Definition at line 303 of file TestRvsdgs.hpp.

◆ barrier

jlm::rvsdg::SimpleNode* jlm::mlir::IOBarrierTest::barrier

Definition at line 301 of file TestRvsdgs.hpp.

◆ lambda

jlm::rvsdg::LambdaNode* jlm::mlir::IOBarrierTest::lambda

Definition at line 299 of file TestRvsdgs.hpp.


The documentation for this class was generated from the following files: