CGRAOmp  0.1
Public Types | Public Member Functions | Private Attributes | List of all members
CGRAOmp::DecoupledAnalysis Class Reference

An analysis result of memory access decoupling for loop kernel. More...

#include <DecoupledAnalysis.hpp>

Public Types

using MemLoadList = SmallVector< LoadInst * >
 
using MemStoreList = SmallVector< StoreInst * >
 
using CompList = SmallVector< User * >
 
using InvarList = SmallVector< Value * >
 
using load_iterator = MemLoadList::iterator
 
using store_iterator = MemStoreList::iterator
 
using comp_iterator = CompList::iterator
 
using invar_iterator = InvarList::iterator
 

Public Member Functions

 DecoupledAnalysis ()
 
 ~DecoupledAnalysis ()
 
void setMemLoad (MemLoadList &&l)
 
void setMemStore (MemStoreList &&l)
 
void setComp (CompList &&l)
 
void setInvars (InvarList &&l)
 
void setError (StringRef cause)
 
void print (raw_ostream &OS) const
 
 operator bool ()
 explicit cast operator for Boolean More...
 
load_iterator load_begin ()
 
load_iterator load_end ()
 
iterator_range< load_iteratorloads ()
 
store_iterator store_begin ()
 
store_iterator store_end ()
 
iterator_range< store_iteratorstores ()
 
comp_iterator comp_begin ()
 
comp_iterator comp_end ()
 
iterator_range< comp_iteratorcomps ()
 
invar_iterator invars_begin ()
 
invar_iterator invars_end ()
 
iterator_range< invar_iteratorinvars ()
 
MemLoadListget_loads ()
 
MemStoreListget_stores ()
 
CompListget_comps ()
 
InvarListget_invars ()
 
void setInvarSkipSequence (Value *node, SmallVector< Value * > seq)
 Set the node traversal skip sequence for loop invariant nodes. More...
 
SmallVector< Value * > * getSkipSequence (Value *node)
 get the node traversal skip sequence More...
 

Private Attributes

MemLoadList mem_load
 
MemStoreList mem_store
 
CompList comp
 
InvarList loop_invariant
 
StringRef err_cause
 
DenseMap< Value *, SmallVector< Value * > > invar_skip_seq
 
bool err = false
 

Detailed Description

An analysis result of memory access decoupling for loop kernel.

Member Typedef Documentation

◆ comp_iterator

using CGRAOmp::DecoupledAnalysis::comp_iterator = CompList::iterator

◆ CompList

using CGRAOmp::DecoupledAnalysis::CompList = SmallVector<User*>

◆ invar_iterator

using CGRAOmp::DecoupledAnalysis::invar_iterator = InvarList::iterator

◆ InvarList

using CGRAOmp::DecoupledAnalysis::InvarList = SmallVector<Value*>

◆ load_iterator

using CGRAOmp::DecoupledAnalysis::load_iterator = MemLoadList::iterator

◆ MemLoadList

using CGRAOmp::DecoupledAnalysis::MemLoadList = SmallVector<LoadInst*>

◆ MemStoreList

using CGRAOmp::DecoupledAnalysis::MemStoreList = SmallVector<StoreInst*>

◆ store_iterator

using CGRAOmp::DecoupledAnalysis::store_iterator = MemStoreList::iterator

Constructor & Destructor Documentation

◆ DecoupledAnalysis()

CGRAOmp::DecoupledAnalysis::DecoupledAnalysis ( )
inline

◆ ~DecoupledAnalysis()

CGRAOmp::DecoupledAnalysis::~DecoupledAnalysis ( )
inline

Member Function Documentation

◆ comp_begin()

comp_iterator CGRAOmp::DecoupledAnalysis::comp_begin ( )
inline

◆ comp_end()

comp_iterator CGRAOmp::DecoupledAnalysis::comp_end ( )
inline

◆ comps()

iterator_range<comp_iterator> CGRAOmp::DecoupledAnalysis::comps ( )
inline

◆ get_comps()

CompList& CGRAOmp::DecoupledAnalysis::get_comps ( )
inline

◆ get_invars()

InvarList& CGRAOmp::DecoupledAnalysis::get_invars ( )
inline

◆ get_loads()

MemLoadList& CGRAOmp::DecoupledAnalysis::get_loads ( )
inline

◆ get_stores()

MemStoreList& CGRAOmp::DecoupledAnalysis::get_stores ( )
inline

◆ getSkipSequence()

SmallVector<Value*>* CGRAOmp::DecoupledAnalysis::getSkipSequence ( Value *  node)
inline

get the node traversal skip sequence

Parameters
nodethe loop invariant node
Returns
SmallVector<Value*>* a sequence of skipped node if there is any skipped node. Otherwise it returns nullptr

◆ invars()

iterator_range<invar_iterator> CGRAOmp::DecoupledAnalysis::invars ( )
inline

◆ invars_begin()

invar_iterator CGRAOmp::DecoupledAnalysis::invars_begin ( )
inline

◆ invars_end()

invar_iterator CGRAOmp::DecoupledAnalysis::invars_end ( )
inline

◆ load_begin()

load_iterator CGRAOmp::DecoupledAnalysis::load_begin ( )
inline

◆ load_end()

load_iterator CGRAOmp::DecoupledAnalysis::load_end ( )
inline

◆ loads()

iterator_range<load_iterator> CGRAOmp::DecoupledAnalysis::loads ( )
inline

◆ operator bool()

CGRAOmp::DecoupledAnalysis::operator bool ( )
inlineexplicit

explicit cast operator for Boolean

Returns
true if decoupling success
false in the case of any error

◆ print()

void CGRAOmp::DecoupledAnalysis::print ( raw_ostream &  OS) const
inline

◆ setComp()

void CGRAOmp::DecoupledAnalysis::setComp ( CompList &&  l)
inline

◆ setError()

void CGRAOmp::DecoupledAnalysis::setError ( StringRef  cause)
inline

◆ setInvars()

void CGRAOmp::DecoupledAnalysis::setInvars ( InvarList &&  l)
inline

◆ setInvarSkipSequence()

void CGRAOmp::DecoupledAnalysis::setInvarSkipSequence ( Value *  node,
SmallVector< Value * >  seq 
)
inline

Set the node traversal skip sequence for loop invariant nodes.

Parameters
nodethe loop invariant node
histsequence of skipped nodes

◆ setMemLoad()

void CGRAOmp::DecoupledAnalysis::setMemLoad ( MemLoadList &&  l)
inline

◆ setMemStore()

void CGRAOmp::DecoupledAnalysis::setMemStore ( MemStoreList &&  l)
inline

◆ store_begin()

store_iterator CGRAOmp::DecoupledAnalysis::store_begin ( )
inline

◆ store_end()

store_iterator CGRAOmp::DecoupledAnalysis::store_end ( )
inline

◆ stores()

iterator_range<store_iterator> CGRAOmp::DecoupledAnalysis::stores ( )
inline

Member Data Documentation

◆ comp

CompList CGRAOmp::DecoupledAnalysis::comp
private

◆ err

bool CGRAOmp::DecoupledAnalysis::err = false
private

◆ err_cause

StringRef CGRAOmp::DecoupledAnalysis::err_cause
private

◆ invar_skip_seq

DenseMap<Value*, SmallVector<Value*> > CGRAOmp::DecoupledAnalysis::invar_skip_seq
private

◆ loop_invariant

InvarList CGRAOmp::DecoupledAnalysis::loop_invariant
private

◆ mem_load

MemLoadList CGRAOmp::DecoupledAnalysis::mem_load
private

◆ mem_store

MemStoreList CGRAOmp::DecoupledAnalysis::mem_store
private

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