Otawa
0.10
|
An event represents a time variation in the execution of an instruction. More...
#include <otawa/etime/features.h>
Public Member Functions | |
Event (Inst *inst) | |
Build an event. More... | |
virtual | ~Event (void) |
Inst * | inst (void) const |
Get the instruction this event applies to. More... | |
virtual kind_t | kind (void) const =0 |
Get the kind of the event. More... | |
virtual ot::time | cost (void) const =0 |
Get the cost in cycles of the occurrence of the event. More... | |
virtual type_t | type (void) const =0 |
virtual occurrence_t | occurrence (void) const |
Get the occurrences class of this event. More... | |
virtual cstring | name (void) const |
Get the name of the event (for human user). More... | |
virtual string | detail (void) const =0 |
virtual const hard::Stage * | stage (void) const |
For events applying to a particular processor stage, get this stage. More... | |
virtual const hard::FunctionalUnit * | fu (void) const |
For events applying to a particular processor functional unit, get this functional unit. More... | |
virtual int | weight (void) const |
Weight is a coarse-grain estimation of the number of times an event arises. More... | |
virtual bool | isEstimating (bool on) |
Ask for support of overestimation for the event when activated (on is true) or desactivated (on is false). More... | |
virtual void | estimate (ilp::Constraint *cons, bool on) |
Add an estimation of the event at the left of the given constraint. More... | |
Property * | getProp (const AbstractIdentifier *id) const |
Find a property by its identifier. More... | |
void | setProp (Property *prop) |
Set the property in the property list removing any double. More... | |
void | setProp (const AbstractIdentifier *id) |
void | removeProp (const AbstractIdentifier *id) |
Remove a property matching the given identifier. More... | |
void | removeProp (const AbstractIdentifier &id) |
Property * | extractProp (const AbstractIdentifier *id) |
Remove a property matching the given identifier and return it. More... | |
Property * | extractProp (const AbstractIdentifier &id) |
Remove a property matching the given identifier and return it. More... | |
void | addProp (Property *prop) |
Add property to the list without checking of duplication. More... | |
void | removeAllProp (const AbstractIdentifier *id) |
Remove all the properties matching the given identifier. More... | |
bool | hasProp (const AbstractIdentifier &id) const |
Test if the property list contains a property matching the given identifier. More... | |
void | clearProps (void) |
Remove all properties from the list. More... | |
void | addProps (const PropList &props) |
Add all properties from the given property list, in a reverse order. More... | |
void | print (elm::io::Output &out) const |
Display the current property list. More... | |
Static Public Attributes | |
static const PropList | EMPTY |
This is an empty proplist for convenience. More... | |
Private Attributes | |
Inst * | _inst |
An event represents a time variation in the execution of an instruction.
Examples of events include instruction/data cache hit/miss, resolution of a branch prediction, hit/miss in the prefetch device of flash memory, etc.
Events are used to compute the execution time of code blocks and are usually linked to their matching block.
otawa::etime::Event::Event | ( | Inst * | inst | ) |
Build an event.
inst | Instruction it applies to. |
|
virtual |
|
inherited |
Add property to the list without checking of duplication.
prop | Property to add. |
References otawa::Property::_next.
Referenced by otawa::Identifier< T >::add(), otawa::ast::ASTInfo::ASTInfo(), otawa::Identifier< otawa::arm::Info * >::copy(), otawa::AbstractIdentifier::initProps(), otawa::ContextualProperty::make(), otawa::script::Script::makeConfig(), otawa::ccg::Builder::processLBlockSet(), otawa::ipet::ILPSystemGetter::processWorkSpace(), otawa::Identifier< T >::ref(), otawa::ContextualProperty::ref(), and otawa::ContextualProperty::refProps().
|
inherited |
Add all properties from the given property list, in a reverse order.
props | Property list to clone. |
References copy(), otawa::PropList::head, and otawa::Property::next().
Referenced by otawa::display::CFGDrawer::CFGDrawer(), otawa::display::GraphVizGraph::GraphVizGraph(), otawa::ParamFeature::instantiate(), otawa::Manager::loadXML(), otawa::display::GraphVizGraph::newEdge(), otawa::display::GraphVizGraph::newNode(), otawa::PropList::operator=(), otawa::Process::Process(), otawa::PropList::PropList(), otawa::display::GraphVizItem::setProps(), otawa::VirtualBasicBlock::VirtualBasicBlock(), and otawa::VirtualCFG::VirtualCFG().
|
inherited |
Remove all properties from the list.
References otawa::Property::next().
Referenced by otawa::PSTBuilder::getVCFG(), otawa::PropList::operator=(), otawa::display::GraphVizItem::setProps(), otawa::PropList::~PropList(), and otawa::WorkSpace::~WorkSpace().
|
pure virtual |
Get the cost in cycles of the occurrence of the event.
Referenced by otawa::etime::EdgeTimeBuilder::apply().
|
pure virtual |
|
virtual |
Add an estimation of the event at the left of the given constraint.
If the event is considered on, it should an overestimation. If the event is considered off, it should be an underestimation.
May be overridden to provide specific behavior for the actual event. As a default, do nothing.
cons | Constraint to add overestimation to. |
on | Add overestimation when the event is triggered (true) or not triggered (false). |
Referenced by otawa::etime::EventCollector::make().
|
inherited |
Remove a property matching the given identifier and return it.
Caller is responsible of the management of the obtained property.
id | Identifier of the property to extract. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::script::Script::makeConfig().
|
inlineinherited |
Remove a property matching the given identifier and return it.
Caller is responsible of the management of the obtained property.
id | Identifier of the property to extract. |
References otawa::PropList::extractProp().
Referenced by otawa::PropList::extractProp().
|
virtual |
For events applying to a particular processor functional unit, get this functional unit.
|
inherited |
Find a property by its identifier.
id | Identifier of the property to find. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::Identifier< otawa::arm::Info * >::exists(), otawa::ContextualProperty::exists(), otawa::ContextualProperty::find(), otawa::Identifier< T >::get(), otawa::PropList::hasProp(), otawa::ContextualProperty::make(), otawa::ParamFeature::matches(), otawa::ImmutableRef< T, I >::print(), otawa::ContextualProperty::print(), otawa::Identifier< T >::ref(), otawa::ContextualProperty::ref(), otawa::ContextualProperty::refProps(), otawa::Identifier< T >::set(), otawa::Identifier< T >::use(), and otawa::Identifier< T >::value().
|
inlineinherited |
Test if the property list contains a property matching the given identifier.
id | Property identifier to look for. |
References otawa::PropList::getProp().
Referenced by otawa::ipet::BasicConstraintsBuilder::addEntryConstraint(), otawa::Monitor::configure(), otawa::ImmutableRef< T, I >::exists(), and otawa::Manager::setVerbosity().
|
inline |
Get the instruction this event applies to.
References _inst.
Referenced by otawa::etime::EdgeTimeBuilder::processSequence().
|
virtual |
Ask for support of overestimation for the event when activated (on is true) or desactivated (on is false).
May be overridden according to the actual event. As a default, return false.
on | Test for event activated, or not activated. |
Referenced by otawa::etime::EventCollector::make().
|
pure virtual |
Get the kind of the event.
Referenced by otawa::etime::EdgeTimeBuilder::apply(), and otawa::etime::EdgeTimeBuilder::rollback().
|
virtual |
Get the name of the event (for human user).
Referenced by otawa::etime::EventCollector::make().
|
virtual |
Get the occurrences class of this event.
References otawa::etime::SOMETIMES.
Referenced by otawa::etime::EdgeTimeBuilder::processSequence().
|
inherited |
Display the current property list.
out | Output to use. |
Referenced by otawa::operator<<(), and otawa::ContextualProperty::print().
|
inherited |
Remove all the properties matching the given identifier.
id | Identifier of properties to remove. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::LoopUnroller::unroll().
|
inherited |
Remove a property matching the given identifier.
id | Identifier of the property to remove. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::PSTBuilder::buildTree(), otawa::BBRemover< T >::clean(), otawa::display::CFGOutput::processCFG(), otawa::SubCFGBuilder::processWorkSpace(), otawa::Ref< T, I >::remove(), and otawa::ContextualPath::Ref< T >::remove().
|
inlineinherited |
References otawa::PropList::removeProp().
Referenced by otawa::PropList::removeProp().
|
inherited |
Set the property in the property list removing any double.
prop | Property to set. |
References otawa::Property::_next, otawa::Property::id(), and otawa::Property::next().
|
inlineinherited |
References otawa::PropList::setProp().
Referenced by otawa::PropList::setProp().
|
virtual |
For events applying to a particular processor stage, get this stage.
|
pure virtual |
Referenced by otawa::etime::EventCollector::make(), and otawa::etime::EdgeTimeBuilder::make().
|
virtual |
Weight is a coarse-grain estimation of the number of times an event arises.
As a default returns 1 but may be customized to get more precise weight estimation. This result will be used by heuristic approach to assess the impact of this event.
|
staticinherited |
This is an empty proplist for convenience.