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

PhiTest1 class. More...

#include <TestRvsdgs.hpp>

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

Public Member Functions

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

Public Attributes

jlm::rvsdg::LambdaNodelambda_fib
 
jlm::rvsdg::LambdaNodelambda_test
 
rvsdg::GammaNodegamma
 
jlm::rvsdg::PhiNodephi
 
rvsdg::SimpleNodealloca
 

Private Member Functions

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

Private Attributes

rvsdg::SimpleNodeCallFibm1_ {}
 
rvsdg::SimpleNodeCallFibm2_ {}
 
rvsdg::SimpleNodeCallFib_ {}
 

Detailed Description

PhiTest1 class.

This function sets up an RVSDG representing the following code snippet:

static void
fib(uint64_t n, uint64_t result[])
{
if (n < 2) {
result[n] = n;
return;
}
fib(n-1, result);
fib(n-2, result);
result[n] = result[n-1] + result[n-2];
}
void
test()
{
uint64_t n = 10;
uint64_t results[n];
fib(n, results);
}

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

Definition at line 1381 of file TestRvsdgs.hpp.

Member Function Documentation

◆ CallFib()

const rvsdg::SimpleNode& jlm::llvm::PhiTest1::CallFib ( ) const
inlinenoexcept

Definition at line 1385 of file TestRvsdgs.hpp.

◆ CallFibm1()

const rvsdg::SimpleNode& jlm::llvm::PhiTest1::CallFibm1 ( ) const
inlinenoexcept

Definition at line 1391 of file TestRvsdgs.hpp.

◆ CallFibm2()

const rvsdg::SimpleNode& jlm::llvm::PhiTest1::CallFibm2 ( ) const
inlinenoexcept

Definition at line 1397 of file TestRvsdgs.hpp.

◆ SetupRvsdg()

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

Create RVSDG for this test.

Implements jlm::llvm::RvsdgTest.

Definition at line 2137 of file TestRvsdgs.cpp.

Member Data Documentation

◆ alloca

rvsdg::SimpleNode* jlm::llvm::PhiTest1::alloca

Definition at line 1409 of file TestRvsdgs.hpp.

◆ CallFib_

rvsdg::SimpleNode* jlm::llvm::PhiTest1::CallFib_ {}
private

Definition at line 1418 of file TestRvsdgs.hpp.

◆ CallFibm1_

rvsdg::SimpleNode* jlm::llvm::PhiTest1::CallFibm1_ {}
private

Definition at line 1415 of file TestRvsdgs.hpp.

◆ CallFibm2_

rvsdg::SimpleNode* jlm::llvm::PhiTest1::CallFibm2_ {}
private

Definition at line 1416 of file TestRvsdgs.hpp.

◆ gamma

rvsdg::GammaNode* jlm::llvm::PhiTest1::gamma

Definition at line 1405 of file TestRvsdgs.hpp.

◆ lambda_fib

jlm::rvsdg::LambdaNode* jlm::llvm::PhiTest1::lambda_fib

Definition at line 1402 of file TestRvsdgs.hpp.

◆ lambda_test

jlm::rvsdg::LambdaNode* jlm::llvm::PhiTest1::lambda_test

Definition at line 1403 of file TestRvsdgs.hpp.

◆ phi

jlm::rvsdg::PhiNode* jlm::llvm::PhiTest1::phi

Definition at line 1407 of file TestRvsdgs.hpp.


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