22 #ifndef _LI_EXEGRAPH_H_
23 #define _LI_EXEGRAPH_H_
29 #define INFINITE_TIME 0x0FFFFFF
41 {
return _time[step][bound];}
65 build(fw, microprocessor, sequence);
74 : ExeNode(graph, stage, inst), _shaded(false), _graph((
LiExeGraph *)graph) {
92 if (
_time[step][bound] != time) {
115 #endif //_LI_EXEGRAPH_H_
int analyze()
Definition: exegraph_LiExeGraph.cpp:110
struct otawa::sem::inst inst
dtd::RefAttr< BasicBlock * > source("source", dtd::STRICT|dtd::REQUIRED)
void setTime(ExeGraph< LiExeNode >::time_step_t step, ExeGraph< LiExeNode >::time_bound_t bound, int time)
Definition: LiExeGraph.h:90
bool maxTimeToNode(LiExeNode *source, LiExeNode *target, int *time)
Definition: exegraph_LiExeGraph.cpp:140
int minLatency(void)
Definition: Microprocessor.h:200
LiExeNode(ExeGraph< LiExeNode > *graph, PipelineStage< LiExeNode > *stage, ExeInst< LiExeNode > *inst)
Builds an execution node tuned for Li's algorithm.
Definition: LiExeGraph.h:73
void shade(void)
Marks the node as "shaded" (see Li's algorithm)
Definition: LiExeGraph.h:43
void earliestTimes()
Definition: exegraph_LiExeGraph.cpp:183
bool _shaded
Definition: LiExeGraph.h:36
LiExeGraph(WorkSpace *fw, Microprocessor< LiExeNode > *microprocessor, ExeSequence< LiExeNode > *sequence)
Definition: LiExeGraph.h:63
class LiExeNode Node
Definition: LiExeGraph.h:51
ExeGraph< N >::code_part_t codePart()
Definition: ExeGraph.h:62
void latestTimes()
Definition: exegraph_LiExeGraph.cpp:164
bool isShaded(void)
Definition: LiExeGraph.h:45
Graph * graph(void) const
Get the container graph if any.
Definition: Graph.h:75
bool separated(LiExeNode *u, LiExeNode *v)
Definition: exegraph_LiExeGraph.cpp:482
#define EPSILON
Definition: LiExeGraph.h:98
void nodeEarliestTimes(LiExeNode *node)
Definition: exegraph_LiExeGraph.cpp:377
A workspace represents a program, its run-time and all information about WCET computation or any othe...
Definition: WorkSpace.h:67
LiExeGraph * _graph
Definition: LiExeGraph.h:37
dtd::RefAttr< BasicBlock * > target("target", dtd::STRICT|dtd::REQUIRED)
#define INFINITE_TIME
Definition: LiExeGraph.h:29
An instruction represented in an ExeGraph.
Definition: ExeGraph.h:49
An execution graph that expresses precedence constraints on the execution of a sequence of instructio...
Definition: ExeGraph.h:40
elm::String timeName(int time)
Definition: LiExeGraph.h:99
void shadeNodes(LiExeNode *node)
Definition: exegraph_LiExeGraph.cpp:192
virtual void build(WorkSpace *fw, Microprocessor< LiExeNode > *microprocessor, ExeSequence< LiExeNode > *sequence)
bool _times_changed
Definition: LiExeGraph.h:53
int _time[ExeGraph< LiExeNode >::STEPS][ExeGraph< LiExeNode >::BOUNDS]
Definition: LiExeGraph.h:35
void dump(elm::io::Output &dotFile)
Definition: exegraph_LiExeGraph.cpp:28
ExeInst< N > * inst(void)
Definition: ExeGraph.h:169
void nodeLatestTimes(LiExeNode *node)
Definition: exegraph_LiExeGraph.cpp:216
t::int64 time
Definition: base.h:47
Definition: LiExeGraph.h:49
void setTimesChanged()
Definition: LiExeGraph.h:68
Definition: LiExeGraph.h:33
int time(ExeGraph< LiExeNode >::time_step_t step, ExeGraph< LiExeNode >::time_bound_t bound)
Definition: LiExeGraph.h:40