Otawa  0.10
otawa::PipelineStage< N > Class Template Reference

#include <otawa/exegraph/Microprocessor.h>

Classes

class  ExeNodeIterator
 
class  FunctionalUnit
 
struct  pipeline_info_t
 

Public Types

enum  order_policy_t { NO_POLICY = 0, IN_ORDER = 1, OUT_OF_ORDER = 2, NUMBER_OF_POLICIES =3 }
 
enum  pipeline_stage_category_t {
  NO_CATEGORY = 0, FETCH = 1, DECODE = 2, EXECUTE = 3,
  WRITE = 4, COMMIT =5, DELAY =6, NUMBER_OF_CATEGORIES =7
}
 
typedef enum
otawa::PipelineStage::order_policy_t 
order_policy_t
 
typedef enum
otawa::PipelineStage::pipeline_stage_category_t 
pipeline_stage_category_t
 
typedef struct
otawa::PipelineStage::pipeline_info_t 
pipeline_info_t
 

Public Member Functions

 PipelineStage (pipeline_info_t &info, Microprocessor< N > *proc)
 
order_policy_t orderPolicy (void)
 
int width (void) const
 
elm::String name (void)
 
elm::String shortName (void)
 
pipeline_stage_category_t category (void)
 
elm::String categoryString (void)
 
elm::String orderPolicyString (void)
 
Queue< N > * sourceQueue (void)
 
Queue< N > * destinationQueue (void)
 
int index (void)
 
int minLatency (void)
 
int maxLatency (void)
 
FunctionalUnitaddFunctionalUnit (typename PipelineStage< N >::FunctionalUnit::fu_info_t &fu_info)
 
bool usesFunctionalUnits (void)
 
void addNode (N *node)
 
void deleteNodes ()
 
int numberOfNodes ()
 
N * node (int index)
 
elm::genstruct::Vector
< FunctionalUnit * > & 
getFUs (void)
 
void addBinding (Inst::kind_t kind, FunctionalUnit *fu)
 
FunctionalUnitfindFU (Inst::kind_t kind)
 

Private Attributes

pipeline_info_t _info
 
bool _uses_fus
 
Vector< Pair< Inst::kind_t,
FunctionalUnit * > > 
bindings
 
elm::genstruct::Vector
< FunctionalUnit * > 
fus
 
int _index
 
Microprocessor< N > * _processor
 
elm::genstruct::Vector< N * > _nodes
 
StringBuffer _category_name [NUMBER_OF_CATEGORIES]
 
StringBuffer _order_name [NUMBER_OF_POLICIES]
 

Member Typedef Documentation

Member Enumeration Documentation

template<class N>
enum otawa::PipelineStage::order_policy_t
Enumerator
NO_POLICY 
IN_ORDER 
OUT_OF_ORDER 
NUMBER_OF_POLICIES 
Enumerator
NO_CATEGORY 
FETCH 
DECODE 
EXECUTE 
WRITE 
COMMIT 
DELAY 
NUMBER_OF_CATEGORIES 

Constructor & Destructor Documentation

Member Function Documentation

template<class N>
void otawa::PipelineStage< N >::addBinding ( Inst::kind_t  kind,
FunctionalUnit fu 
)
inline
template<class N>
PipelineStage< N >::FunctionalUnit * otawa::PipelineStage< N >::addFunctionalUnit ( typename PipelineStage< N >::FunctionalUnit::fu_info_t fu_info)
template<class N>
void otawa::PipelineStage< N >::addNode ( N *  node)
inline
template<class N>
pipeline_stage_category_t otawa::PipelineStage< N >::category ( void  )
inline
template<class N>
elm::String otawa::PipelineStage< N >::categoryString ( void  )
inline
template<class N>
void otawa::PipelineStage< N >::deleteNodes ( )
inline
template<class N>
Queue<N>* otawa::PipelineStage< N >::destinationQueue ( void  )
inline
template<class N>
FunctionalUnit* otawa::PipelineStage< N >::findFU ( Inst::kind_t  kind)
inline
template<class N>
elm::genstruct::Vector<FunctionalUnit *>& otawa::PipelineStage< N >::getFUs ( void  )
inline
template<class N>
int otawa::PipelineStage< N >::index ( void  )
inline
template<class N>
int otawa::PipelineStage< N >::maxLatency ( void  )
inline
template<class N>
int otawa::PipelineStage< N >::minLatency ( void  )
inline
template<class N>
elm::String otawa::PipelineStage< N >::name ( void  )
inline
template<class N>
N* otawa::PipelineStage< N >::node ( int  index)
inline
template<class N>
int otawa::PipelineStage< N >::numberOfNodes ( )
inline
template<class N>
order_policy_t otawa::PipelineStage< N >::orderPolicy ( void  )
inline
template<class N>
elm::String otawa::PipelineStage< N >::orderPolicyString ( void  )
inline
template<class N>
elm::String otawa::PipelineStage< N >::shortName ( void  )
inline
template<class N>
Queue<N>* otawa::PipelineStage< N >::sourceQueue ( void  )
inline
template<class N>
bool otawa::PipelineStage< N >::usesFunctionalUnits ( void  )
inline
template<class N>
int otawa::PipelineStage< N >::width ( void  ) const
inline

Member Data Documentation

template<class N>
StringBuffer otawa::PipelineStage< N >::_category_name[NUMBER_OF_CATEGORIES]
private
template<class N>
int otawa::PipelineStage< N >::_index
private
template<class N>
pipeline_info_t otawa::PipelineStage< N >::_info
private
template<class N>
elm::genstruct::Vector<N *> otawa::PipelineStage< N >::_nodes
private
template<class N>
StringBuffer otawa::PipelineStage< N >::_order_name[NUMBER_OF_POLICIES]
private
template<class N>
Microprocessor<N>* otawa::PipelineStage< N >::_processor
private
template<class N>
bool otawa::PipelineStage< N >::_uses_fus
private
template<class N>
Vector<Pair<Inst::kind_t, FunctionalUnit *> > otawa::PipelineStage< N >::bindings
private
template<class N>
elm::genstruct::Vector<FunctionalUnit *> otawa::PipelineStage< N >::fus
private

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