-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathshorthand_if.cpp
More file actions
109 lines (96 loc) · 6.72 KB
/
shorthand_if.cpp
File metadata and controls
109 lines (96 loc) · 6.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
else {
string var0 = line[0]; // z = g ? d : e ----> z
string var1 = line[2];// g
string var2 = line[4];// d
string var3 = line[6];// e
const bool is_in1 = set1.find(var1) != set1.end();
const bool is_in2 = set1.find(var2) != set1.end();
const bool is_in3 = set1.find(var3) != set1.end();
// If no dependency, add edge from sink node
if (is_in1 == false && is_in2 == false && is_in3 == false) {
//vertices.at(0).addSuccessor(findV(var0)); // Adds successor to sink node
vertices.at(0).addSuccessor(vertices.at(getIndex(var0)));
//findV(var0).addPredecessors(vertices.at(0)); // Adds predecessor
vertices.at(getIndex(var0)).addPredecessors(vertices.at(0));
//cout << "Neither" << endl;
set1.insert(var0);
}
/* Initial Time is time from CDFG. Needed to compute slack for List_R scheduling */
else {
if (is_in1 == true && is_in2 == true && is_in3 == true) {
//cout << "Both" << endl;
vertices.at(getIndex(var1)).addSuccessor(vertices.at(getIndex(var0)));
vertices.at(getIndex(var2)).addSuccessor(vertices.at(getIndex(var0)));
vertices.at(getIndex(var3)).addSuccessor(vertices.at(getIndex(var0)));
vertices.at(getIndex(var0)).addPredecessors(vertices.at(getIndex(var1)));
vertices.at(getIndex(var0)).addPredecessors(vertices.at(getIndex(var2)));
vertices.at(getIndex(var0)).addPredecessors(vertices.at(getIndex(var3)));
vertices.at(getIndex(var0)).setInitialTime(max(max(vertices.at(getIndex(var1)).getInitialTime() + vertices.at(getIndex(var1)).getDelay(), vertices.at(getIndex(var2)).getInitialTime() + vertices.at(getIndex(var2)).getDelay()), vertices.at(getIndex(var3)).getInitialTime() + vertices.at(getIndex(var3)).getDelay()));
//findV(var1).addSuccessor(findV(var0)); // Adds successor
//findV(var2).addSuccessor(findV(var0)); // Adds successor
//findV(var0).addPredecessors(findV(var1)); // Adds predecessor
//findV(var0).addPredecessors(findV(var2)); // Adds predecessor
//findV(var0).setInitialTime(max(findV(var1).getInitialTime() + findV(var1).getDelay(), findV(var2).getInitialTime() + findV(var2).getDelay()));
}
else if (is_in1 == true && is_in2 == true && is_in3 == false) {
//cout << var1 << " is dependent" << endl;
vertices.at(getIndex(var1)).addSuccessor(vertices.at(getIndex(var0)));
vertices.at(getIndex(var2)).addSuccessor(vertices.at(getIndex(var0)));
vertices.at(getIndex(var0)).addPredecessors(vertices.at(getIndex(var1)));
vertices.at(getIndex(var0)).addPredecessors(vertices.at(getIndex(var2)));
vertices.at(getIndex(var0)).setInitialTime(max(vertices.at(getIndex(var1)).getInitialTime() + vertices.at(getIndex(var1)).getDelay(), vertices.at(getIndex(var2)).getInitialTime() + vertices.at(getIndex(var2)).getDelay()));
}
else if (is_in1 == false && is_in2 == true && is_in3 == true) {
//cout << var2 << " is dependent" << endl;
//findV(var2).addSuccessor(findV(var0)); // Adds successor
//findV(var0).addPredecessors(findV(var2)); // Adds predecessor
//findV(var0).setInitialTime(findV(var2).getInitialTime() + findV(var2).getDelay());
vertices.at(getIndex(var2)).addSuccessor(vertices.at(getIndex(var0)));
vertices.at(getIndex(var3)).addSuccessor(vertices.at(getIndex(var0)));
vertices.at(getIndex(var0)).addPredecessors(vertices.at(getIndex(var2)));
vertices.at(getIndex(var0)).addPredecessors(vertices.at(getIndex(var3)));
vertices.at(getIndex(var0)).setInitialTime(max(vertices.at(getIndex(var2)).getInitialTime() + vertices.at(getIndex(var2)).getDelay(), vertices.at(getIndex(var3)).getInitialTime() + vertices.at(getIndex(var3)).getDelay()));
}
else if (is_in1 == true && is_in2 == false && is_in3 == true) {
//cout << var2 << " is dependent" << endl;
//findV(var2).addSuccessor(findV(var0)); // Adds successor
//findV(var0).addPredecessors(findV(var2)); // Adds predecessor
//findV(var0).setInitialTime(findV(var2).getInitialTime() + findV(var2).getDelay());
vertices.at(getIndex(var1)).addSuccessor(vertices.at(getIndex(var0)));
vertices.at(getIndex(var3)).addSuccessor(vertices.at(getIndex(var0)));
vertices.at(getIndex(var0)).addPredecessors(vertices.at(getIndex(var1)));
vertices.at(getIndex(var0)).addPredecessors(vertices.at(getIndex(var3)));
vertices.at(getIndex(var0)).setInitialTime(max(vertices.at(getIndex(var1)).getInitialTime() + vertices.at(getIndex(var1)).getDelay(), vertices.at(getIndex(var3)).getInitialTime() + vertices.at(getIndex(var3)).getDelay()));
}
else if (is_in1 == true && is_in2 == false && is_in3 == false) {
//cout << var2 << " is dependent" << endl;
//findV(var2).addSuccessor(findV(var0)); // Adds successor
//findV(var0).addPredecessors(findV(var2)); // Adds predecessor
//findV(var0).setInitialTime(findV(var2).getInitialTime() + findV(var2).getDelay());
vertices.at(getIndex(var1)).addSuccessor(vertices.at(getIndex(var0)));
vertices.at(getIndex(var0)).addPredecessors(vertices.at(getIndex(var1)));
vertices.at(getIndex(var0)).setInitialTime(vertices.at(getIndex(var1)).getInitialTime() + vertices.at(getIndex(var1)).getDelay());
}
else if (is_in1 == false && is_in2 == true && is_in3 == false) {
//cout << var2 << " is dependent" << endl;
//findV(var2).addSuccessor(findV(var0)); // Adds successor
//findV(var0).addPredecessors(findV(var2)); // Adds predecessor
//findV(var0).setInitialTime(findV(var2).getInitialTime() + findV(var2).getDelay());
vertices.at(getIndex(var2)).addSuccessor(vertices.at(getIndex(var0)));
vertices.at(getIndex(var0)).addPredecessors(vertices.at(getIndex(var2)));
vertices.at(getIndex(var0)).setInitialTime(vertices.at(getIndex(var2)).getInitialTime() + vertices.at(getIndex(var2)).getDelay());
}
else if (is_in1 == false && is_in2 == false && is_in3 == true) {
//cout << var2 << " is dependent" << endl;
//findV(var2).addSuccessor(findV(var0)); // Adds successor
//findV(var0).addPredecessors(findV(var2)); // Adds predecessor
//findV(var0).setInitialTime(findV(var2).getInitialTime() + findV(var2).getDelay());
vertices.at(getIndex(var3)).addSuccessor(vertices.at(getIndex(var0)));
vertices.at(getIndex(var0)).addPredecessors(vertices.at(getIndex(var3)));
vertices.at(getIndex(var0)).setInitialTime(vertices.at(getIndex(var3)).getInitialTime() + vertices.at(getIndex(var3)).getDelay());
}
//cout << "Inserting " << var0 << endl;
set1.insert(var0);
vertices.at(0).addSuccessor(vertices.at(getIndex(var0))); // Adds successor to sink node
}
}