Jlm
Public Attributes | Private Member Functions | List of all members
jlm::llvm::LoadTest2 Class Referencefinal

LoadTest2 class. More...

#include <TestRvsdgs.hpp>

Inheritance diagram for jlm::llvm::LoadTest2:
Inheritance graph
[legend]
Collaboration diagram for jlm::llvm::LoadTest2:
Collaboration graph
[legend]

Public Attributes

jlm::rvsdg::LambdaNodelambda
 
rvsdg::Nodesize
 
rvsdg::SimpleNodealloca_a
 
rvsdg::SimpleNodealloca_b
 
rvsdg::SimpleNodealloca_x
 
rvsdg::SimpleNodealloca_y
 
rvsdg::SimpleNodealloca_p
 
rvsdg::SimpleNodeload_x
 
rvsdg::SimpleNodeload_a
 

Private Member Functions

std::unique_ptr< jlm::llvm::LlvmRvsdgModuleSetupRvsdg () override
 Create RVSDG for this test. More...
 

Additional Inherited Members

- Public Member Functions inherited from jlm::llvm::RvsdgTest
virtual ~RvsdgTest ()=default
 
jlm::llvm::LlvmRvsdgModulemodule ()
 
const rvsdg::Graphgraph ()
 
void InitializeTest ()
 

Detailed Description

LoadTest2 class.

This function sets up an RVSDG representing the following function:

void f()
{
// Represented using allocas
uint32_t a, b;
uint32_t * x, * y;
uint32_t ** p;
x = &a;
y = &b;
p = &x;
// Represented as virtual registers
uint32_t * load_x = *p;
uint32_t load_a = *load_x;
y = load_a;
}
rvsdg::SimpleNode * load_a
Definition: TestRvsdgs.hpp:217
rvsdg::SimpleNode * load_x
Definition: TestRvsdgs.hpp:216

It uses a single memory state to sequentialize the respective memory operations.

Definition at line 199 of file TestRvsdgs.hpp.

Member Function Documentation

◆ SetupRvsdg()

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

Create RVSDG for this test.

Implements jlm::llvm::RvsdgTest.

Definition at line 171 of file TestRvsdgs.cpp.

Member Data Documentation

◆ alloca_a

rvsdg::SimpleNode* jlm::llvm::LoadTest2::alloca_a

Definition at line 210 of file TestRvsdgs.hpp.

◆ alloca_b

rvsdg::SimpleNode* jlm::llvm::LoadTest2::alloca_b

Definition at line 211 of file TestRvsdgs.hpp.

◆ alloca_p

rvsdg::SimpleNode* jlm::llvm::LoadTest2::alloca_p

Definition at line 214 of file TestRvsdgs.hpp.

◆ alloca_x

rvsdg::SimpleNode* jlm::llvm::LoadTest2::alloca_x

Definition at line 212 of file TestRvsdgs.hpp.

◆ alloca_y

rvsdg::SimpleNode* jlm::llvm::LoadTest2::alloca_y

Definition at line 213 of file TestRvsdgs.hpp.

◆ lambda

jlm::rvsdg::LambdaNode* jlm::llvm::LoadTest2::lambda

Definition at line 206 of file TestRvsdgs.hpp.

◆ load_a

rvsdg::SimpleNode* jlm::llvm::LoadTest2::load_a

Definition at line 217 of file TestRvsdgs.hpp.

◆ load_x

rvsdg::SimpleNode* jlm::llvm::LoadTest2::load_x

Definition at line 216 of file TestRvsdgs.hpp.

◆ size

rvsdg::Node* jlm::llvm::LoadTest2::size

Definition at line 208 of file TestRvsdgs.hpp.


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