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

#include <tac.hpp>

Public Member Functions

 ~ThreeAddressCode () noexcept=default
 
 ThreeAddressCode (std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands)
 
 ThreeAddressCode (std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands, const std::vector< std::string > &names)
 
 ThreeAddressCode (std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands, std::vector< std::unique_ptr< ThreeAddressCodeVariable > > results)
 
 ThreeAddressCode (const llvm::ThreeAddressCode &)=delete
 
 ThreeAddressCode (llvm::ThreeAddressCode &&)=delete
 
ThreeAddressCode & operator= (const llvm::ThreeAddressCode &)=delete
 
ThreeAddressCode & operator= (llvm::ThreeAddressCode &&)=delete
 
const rvsdg::SimpleOperation & operation () const noexcept
 
size_t noperands () const noexcept
 
const Variable * operand (size_t index) const noexcept
 
size_t nresults () const noexcept
 
const ThreeAddressCodeVariable * result (size_t index) const noexcept
 
std::vector< std::unique_ptr< ThreeAddressCodeVariable > > results ()
 
void replace (const rvsdg::SimpleOperation &operation, const std::vector< const Variable * > &operands)
 
void convert (const rvsdg::SimpleOperation &operation, const std::vector< const Variable * > &operands)
 
void setRvsdgNodeLocation (const rvsdg::Node &node)
 
const std::optional< RvsdgNodeLocation > & getRvsdgNodeLocation () const noexcept
 

Static Public Member Functions

static std::string ToAscii (const ThreeAddressCode &threeAddressCode)
 
static std::unique_ptr< llvm::ThreeAddressCode > create (std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands)
 
static std::unique_ptr< llvm::ThreeAddressCode > create (std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands, const std::vector< std::string > &names)
 
static std::unique_ptr< llvm::ThreeAddressCode > create (std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands, std::vector< std::unique_ptr< ThreeAddressCodeVariable > > results)
 

Private Member Functions

void create_results (const rvsdg::SimpleOperation &operation, const std::vector< std::string > &names)
 

Static Private Member Functions

static std::vector< std::string > create_names (size_t nnames)
 

Private Attributes

std::optional< RvsdgNodeLocation > rvsdgNodeLocation_
 
std::vector< const Variable * > operands_
 
std::unique_ptr< rvsdg::Operation > operation_
 
std::vector< std::unique_ptr< ThreeAddressCodeVariable > > results_
 

Detailed Description

Definition at line 62 of file tac.hpp.

Constructor & Destructor Documentation

◆ ~ThreeAddressCode()

jlm::llvm::ThreeAddressCode::~ThreeAddressCode ( )
defaultnoexcept

◆ ThreeAddressCode() [1/5]

jlm::llvm::ThreeAddressCode::ThreeAddressCode ( std::unique_ptr< rvsdg::SimpleOperation >  operation,
const std::vector< const Variable * > &  operands 
)

Definition at line 53 of file tac.cpp.

◆ ThreeAddressCode() [2/5]

jlm::llvm::ThreeAddressCode::ThreeAddressCode ( std::unique_ptr< rvsdg::SimpleOperation >  operation,
const std::vector< const Variable * > &  operands,
const std::vector< std::string > &  names 
)

Definition at line 65 of file tac.cpp.

◆ ThreeAddressCode() [3/5]

jlm::llvm::ThreeAddressCode::ThreeAddressCode ( std::unique_ptr< rvsdg::SimpleOperation >  operation,
const std::vector< const Variable * > &  operands,
std::vector< std::unique_ptr< ThreeAddressCodeVariable > >  results 
)

Definition at line 80 of file tac.cpp.

◆ ThreeAddressCode() [4/5]

jlm::llvm::ThreeAddressCode::ThreeAddressCode ( const llvm::ThreeAddressCode &  )
delete

◆ ThreeAddressCode() [5/5]

jlm::llvm::ThreeAddressCode::ThreeAddressCode ( llvm::ThreeAddressCode &&  )
delete

Member Function Documentation

◆ convert()

void jlm::llvm::ThreeAddressCode::convert ( const rvsdg::SimpleOperation &  operation,
const std::vector< const Variable * > &  operands 
)

Definition at line 93 of file tac.cpp.

◆ create() [1/3]

static std::unique_ptr< llvm::ThreeAddressCode > jlm::llvm::ThreeAddressCode::create ( std::unique_ptr< rvsdg::SimpleOperation >  operation,
const std::vector< const Variable * > &  operands 
)
inlinestatic

Definition at line 155 of file tac.hpp.

◆ create() [2/3]

static std::unique_ptr< llvm::ThreeAddressCode > jlm::llvm::ThreeAddressCode::create ( std::unique_ptr< rvsdg::SimpleOperation >  operation,
const std::vector< const Variable * > &  operands,
const std::vector< std::string > &  names 
)
inlinestatic

Definition at line 163 of file tac.hpp.

◆ create() [3/3]

static std::unique_ptr< llvm::ThreeAddressCode > jlm::llvm::ThreeAddressCode::create ( std::unique_ptr< rvsdg::SimpleOperation >  operation,
const std::vector< const Variable * > &  operands,
std::vector< std::unique_ptr< ThreeAddressCodeVariable > >  results 
)
inlinestatic

Definition at line 172 of file tac.hpp.

◆ create_names()

static std::vector< std::string > jlm::llvm::ThreeAddressCode::create_names ( size_t  nnames)
inlinestaticprivate

Definition at line 197 of file tac.hpp.

◆ create_results()

void jlm::llvm::ThreeAddressCode::create_results ( const rvsdg::SimpleOperation &  operation,
const std::vector< std::string > &  names 
)
inlineprivate

Definition at line 185 of file tac.hpp.

◆ getRvsdgNodeLocation()

const std::optional< RvsdgNodeLocation > & jlm::llvm::ThreeAddressCode::getRvsdgNodeLocation ( ) const
inlinenoexcept

Definition at line 146 of file tac.hpp.

◆ noperands()

size_t jlm::llvm::ThreeAddressCode::noperands ( ) const
inlinenoexcept

Definition at line 98 of file tac.hpp.

◆ nresults()

size_t jlm::llvm::ThreeAddressCode::nresults ( ) const
inlinenoexcept

Definition at line 111 of file tac.hpp.

◆ operand()

const Variable * jlm::llvm::ThreeAddressCode::operand ( size_t  index) const
inlinenoexcept

Definition at line 104 of file tac.hpp.

◆ operation()

const rvsdg::SimpleOperation & jlm::llvm::ThreeAddressCode::operation ( ) const
inlinenoexcept

Definition at line 92 of file tac.hpp.

◆ operator=() [1/2]

ThreeAddressCode & jlm::llvm::ThreeAddressCode::operator= ( const llvm::ThreeAddressCode &  )
delete

◆ operator=() [2/2]

ThreeAddressCode & jlm::llvm::ThreeAddressCode::operator= ( llvm::ThreeAddressCode &&  )
delete

◆ replace()

void jlm::llvm::ThreeAddressCode::replace ( const rvsdg::SimpleOperation &  operation,
const std::vector< const Variable * > &  operands 
)

Definition at line 108 of file tac.cpp.

◆ result()

const ThreeAddressCodeVariable * jlm::llvm::ThreeAddressCode::result ( size_t  index) const
inlinenoexcept

Definition at line 117 of file tac.hpp.

◆ results()

std::vector< std::unique_ptr< ThreeAddressCodeVariable > > jlm::llvm::ThreeAddressCode::results ( )
inline

Definition at line 128 of file tac.hpp.

◆ setRvsdgNodeLocation()

void jlm::llvm::ThreeAddressCode::setRvsdgNodeLocation ( const rvsdg::Node &  node)
inline

Definition at line 140 of file tac.hpp.

◆ ToAscii()

std::string jlm::llvm::ThreeAddressCode::ToAscii ( const ThreeAddressCode &  threeAddressCode)
static

Definition at line 120 of file tac.cpp.

Member Data Documentation

◆ operands_

std::vector<const Variable *> jlm::llvm::ThreeAddressCode::operands_
private

Definition at line 208 of file tac.hpp.

◆ operation_

std::unique_ptr<rvsdg::Operation> jlm::llvm::ThreeAddressCode::operation_
private

Definition at line 209 of file tac.hpp.

◆ results_

std::vector<std::unique_ptr<ThreeAddressCodeVariable> > jlm::llvm::ThreeAddressCode::results_
private

Definition at line 210 of file tac.hpp.

◆ rvsdgNodeLocation_

std::optional<RvsdgNodeLocation> jlm::llvm::ThreeAddressCode::rvsdgNodeLocation_
private

Definition at line 207 of file tac.hpp.


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