This commit is contained in:
vinhta 2021-09-24 16:27:24 -07:00
commit 3c2162cb9e
257 changed files with 49 additions and 19665 deletions

View File

@ -1,14 +0,0 @@
X,4
Y,4
R,4
IC,0
Cclock,0.7
CPUclock,2
Mem,8GB
MODE,0
ALGO,RAMP
MSA,10
MAPII,10
MAX_MAP,1000
MAX_II,50
LAMBDA,0.02
1 X 4
2 Y 4
3 R 4
4 IC 0
5 Cclock 0.7
6 CPUclock 2
7 Mem 8GB
8 MODE 0
9 ALGO RAMP
10 MSA 10
11 MAPII 10
12 MAX_MAP 1000
13 MAX_II 50
14 LAMBDA 0.02

View File

@ -1,14 +0,0 @@
4
4
4
0
0.7
2
8GB
0
RAMP
10
10
1000
50
0.02

View File

@ -1,5 +0,0 @@
3 0 1 TRU 0
2 1 1 TRU 0
1 2 0 TRU 0
0 3 0 TRU 0
3 4 0 TRU 0

View File

@ -1,5 +0,0 @@
0 29 0
1 29 0
2 4 0
3 0 0
4 10 0

View File

@ -1,20 +0,0 @@
digraph LoadConst {
{
0 [color=red ];
1 [color=red ];
2 [color=red ];
3 [color=red ];
4 [color=red ];
3 -> 0 [style=bold, color=red, label=1]
2 -> 1 [style=bold, color=red, label=1]
1 -> 2
0 -> 3
3 -> 4
}
}

View File

@ -1,33 +0,0 @@
digraph Success_MS_ {
{
0 [color=red ];
1 [color=red ];
2 [color=red ];
3 [color=red ];
4 [color=red ];
3 -> 0 [style=bold, color=red, label=1]
2 -> 1 [style=bold, color=red, label=1]
1 -> 2
0 -> 3
3 -> 4
}
{
node [shape=plaintext];
T0 -> T1;
}{ rank = same;
2; 3; T0;
};
{ rank = same;
0; 1; 4; T1;
};
{ rank = same;
};
}

View File

@ -1,649 +0,0 @@
Inside insgen
UPDATING EDGES 3:0
UPDATING DEPENDENCY EDGES FOR NODE 0:1
UPDATING EDGES 2:1
UPDATING DEPENDENCY EDGES FOR NODE 1:1
UPDATING EDGES 1:2
UPDATING EDGES 0:3
UPDATING EDGES 3:4
UPDATING EDGES 5:0
UPDATING EDGES 5:1
UPDATING EDGES 5:2
UPDATING EDGES 5:3
UPDATING EDGES 6:4
UPDATING EDGES 110:111
UPDATING EDGES 2:111
UPDATING EDGES 109:111
file ptr:0 open:1 prolog_size:64
64
32
32
*********KERNEL*****************
*********EPILOG*****************
LiveOut_data_pe: 2 liveOut_data: 2
PE: 0 Configuration Boundary: 0 10e004000
PE: 1 Configuration Boundary: 0 10e004000
PE: 2 Configuration Boundary: 0 10e004000
PE: 3 Configuration Boundary: 0 10e004000
PE: 4 Configuration Boundary: 0 10e004000
PE: 5 Configuration Boundary: 0 10e004000
PE: 6 Configuration Boundary: 0 10e004000
PE: 7 Configuration Boundary: 0 10e004000
PE: 8 Configuration Boundary: 0 10e004000
PE: 9 Configuration Boundary: 0 10e004000
PE: 10 Configuration Boundary: 0 10e004000
PE: 11 Configuration Boundary: 0 10e004000
PE: 12 Configuration Boundary: 0 10e004000
PE: 13 Configuration Boundary: 0 10e004000
PE: 14 Configuration Boundary: 0 10e004000
PE: 15 Configuration Boundary: 0 10e004000
reg_num: 0
node: 6
We have arrived after isLiveStoreData Line
We have arrived after getNodeType
constant node: 6
Generating Instructions To Store Address (Hex) 9a640
Node name: gVar1
Loading dynamic constant value. LDA and LDD are 168c02004: 105c04000 in pe 2
Load Dyn Cons 168c02004 105c04000
node: 6
reg_num: 0
node: 0
We have arrived after isLiveStoreData Line
We have arrived after getNodeType
node: 0
reg_num: 0
node: 1
We have arrived after isLiveStoreData Line
We have arrived after getNodeType
node: 1
reg_num: 1
node: 2
We have arrived after isLiveStoreData Line
We have arrived after getNodeType
node: 2
reg_num: 0
node: 3
We have arrived after isLiveStoreData Line
We have arrived after getNodeType
node: 3
reg_num: 2
node: 4
We have arrived after isLiveStoreData Line
We have arrived after getNodeType
node: 4
reg_num: 1
node: 5
We have arrived after isLiveStoreData Line
We have arrived after getNodeType
constant node: 5
Large Constant (Hex): 1 Constant (Decimal): 1
node: 5
reg_num: 3
node: 6
We have arrived after isLiveStoreData Line
We have arrived after getNodeType
constant node: 6
Generating Instructions To Store Address (Hex) 9a640
Node name: gVar1
Loading dynamic constant value. LDA and LDD are 168d82004: 105c1c000 in pe 2
Load Dyn Cons 168d82004 105c1c000
node: 6
reg_num: 2
node: 109
We have arrived after isLiveStoreData Line
We have arrived after getNodeType
constant node: 109
Generating Instructions To Store Address (Hex) 9a644
Node name: gVar2
node: 109
reg_num: 3
node: 110
We have arrived after isLiveStoreData Line
We have arrived after getNodeType
ld_add/st_add node: 110
Variable Address (Hex): 9a644 Node: 110 PE: 0 Address (Decimal): 632388 RegNum: 3
node: 110
reg_num: 4
node: 111
pe mem op
0 12
1 3
2 16
3 3
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 0
****** Generatina Instructions For Non-Phi Nodes *****
NODES SCHEDULED AT 1
NODES SCHEDULED AT 2
2 3
FOR NODE 2: Datatype:1 opcode:8 lmux:1 rmux:6 reg1:0 reg2:0 we:1 wreg:4 imm:1 ab:0 db:0
Decoded 181c04001
FOR NODE 3: Datatype:1 opcode:0 lmux:2 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:1 ab:0 db:0
Decoded 102c00001
NODES SCHEDULED AT 3
4
FOR NODE 4: Datatype:1 opcode:12 lmux:2 rmux:0 reg1:0 reg2:3 we:0 wreg:0 imm:0 ab:0 db:0
Decoded 1c2060000
****** Generating Instructions For Phi Nodes *****
NODES SCHEDULED AT 1
0 1
Phi Instructions
Phi! Prolog! FOR NODE 0: Datatype:1 opcode:1 lmux:6 rmux:0 reg1:0 reg2:0 we:0 wreg:0 imm:1 ab:0 db:0
Decoded 11e000001
Phi! Prolog! FOR NODE 1: Datatype:1 opcode:1 lmux:6 rmux:0 reg1:0 reg2:0 we:0 wreg:0 imm:1 ab:0 db:0
Decoded 11e000001
Kernel Instructions
FOR NODE 0: Datatype:1 opcode:1 lmux:1 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:0 ab:0 db:0
Decoded 119c00000
FOR NODE 1: Datatype:1 opcode:1 lmux:2 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:0 ab:0 db:0
Decoded 11ac00000
****** Generating Instructions For Store Nodes For Live Variables*****
NODES SCHEDULED AT 4
NODES SCHEDULED AT STORE CYCLE 0
110 111
FOR NODE 110: Datatype:1 opcode:6 lmux:0 rmux:6 reg1:3 reg2:0 we:0 wreg:0 imm:4 ab:1 db:0
Decoded 168d82004
FOR NODE 111: Datatype:1 opcode:0 lmux:0 rmux:6 reg1:4 reg2:0 we:0 wreg:0 imm:0 ab:0 db:1
Decoded 100c01000
*******PROLOG*********
0: 10e004000
1: 10e004000
2: 10e004000
3: 10e004000
4: 10e004000
5: 10e004000
6: 10e004000
7: 10e004000
8: 10e004000
9: 10e004000
10: 10e004000
11: 10e004000
12: 10e004000
13: 10e004000
14: 10e004000
15: 10e004000
16: 11e00c001
17: 177e00000
18: 11e004640
19: 177e00000
20: 177e00000
21: 177e00000
22: 177e00000
23: 177e00000
24: 177e00000
25: 177e00000
26: 177e00000
27: 177e00000
28: 177e00000
29: 177e00000
30: 177e00000
31: 177e00000
32: 12e00c000
33: 177e00000
34: 12e00409a
35: 177e00000
36: 177e00000
37: 177e00000
38: 177e00000
39: 177e00000
40: 177e00000
41: 177e00000
42: 177e00000
43: 177e00000
44: 177e00000
45: 177e00000
46: 177e00000
47: 177e00000
48: 13e00c000
49: 177e00000
50: 13e004000
51: 177e00000
52: 177e00000
53: 177e00000
54: 177e00000
55: 177e00000
56: 177e00000
57: 177e00000
58: 177e00000
59: 177e00000
60: 177e00000
61: 177e00000
62: 177e00000
63: 177e00000
64: 11e014644
65: 177e00000
66: 168c02004
67: 177e00000
68: 177e00000
69: 177e00000
70: 177e00000
71: 177e00000
72: 177e00000
73: 177e00000
74: 177e00000
75: 177e00000
76: 177e00000
77: 177e00000
78: 177e00000
79: 177e00000
80: 12e01409a
81: 177e00000
82: 105c04000
83: 177e00000
84: 177e00000
85: 177e00000
86: 177e00000
87: 177e00000
88: 177e00000
89: 177e00000
90: 177e00000
91: 177e00000
92: 177e00000
93: 177e00000
94: 177e00000
95: 177e00000
96: 13e014000
97: 177e00000
98: 11e01c640
99: 177e00000
100: 177e00000
101: 177e00000
102: 177e00000
103: 177e00000
104: 177e00000
105: 177e00000
106: 177e00000
107: 177e00000
108: 177e00000
109: 177e00000
110: 177e00000
111: 177e00000
112: 11e01c644
113: 177e00000
114: 12e01c09a
115: 177e00000
116: 177e00000
117: 177e00000
118: 177e00000
119: 177e00000
120: 177e00000
121: 177e00000
122: 177e00000
123: 177e00000
124: 177e00000
125: 177e00000
126: 177e00000
127: 177e00000
128: 12e01c09a
129: 177e00000
130: 13e01c000
131: 177e00000
132: 177e00000
133: 177e00000
134: 177e00000
135: 177e00000
136: 177e00000
137: 177e00000
138: 177e00000
139: 177e00000
140: 177e00000
141: 177e00000
142: 177e00000
143: 177e00000
144: 13e01c000
145: 177e00000
146: 168d82004
147: 177e00000
148: 177e00000
149: 177e00000
150: 177e00000
151: 177e00000
152: 177e00000
153: 177e00000
154: 177e00000
155: 177e00000
156: 177e00000
157: 177e00000
158: 177e00000
159: 177e00000
160: 177e00000
161: 177e00000
162: 105c1c000
163: 177e00000
164: 177e00000
165: 177e00000
166: 177e00000
167: 177e00000
168: 177e00000
169: 177e00000
170: 177e00000
171: 177e00000
172: 177e00000
173: 177e00000
174: 177e00000
175: 177e00000
176: 177e00000
177: 177e00000
178: 177e00000
179: 177e00000
180: 177e00000
181: 177e00000
182: 177e00000
183: 177e00000
184: 177e00000
185: 177e00000
186: 177e00000
187: 177e00000
188: 177e00000
189: 177e00000
190: 177e00000
191: 177e00000
192: 177e00000
193: 177e00000
194: 177e00000
195: 177e00000
196: 177e00000
197: 177e00000
198: 177e00000
199: 177e00000
200: 177e00000
201: 177e00000
202: 177e00000
203: 177e00000
204: 177e00000
205: 177e00000
206: 177e00000
207: 177e00000
208: 177e00000
209: 177e00000
210: 177e00000
211: 177e00000
212: 177e00000
213: 177e00000
214: 177e00000
215: 177e00000
216: 177e00000
217: 177e00000
218: 177e00000
219: 177e00000
220: 177e00000
221: 177e00000
222: 177e00000
223: 177e00000
224: 177e00000
225: 177e00000
226: 177e00000
227: 177e00000
228: 177e00000
229: 177e00000
230: 177e00000
231: 177e00000
232: 177e00000
233: 177e00000
234: 177e00000
235: 177e00000
236: 177e00000
237: 177e00000
238: 177e00000
239: 177e00000
240: 177e00000
241: 177e00000
242: 177e00000
243: 177e00000
244: 177e00000
245: 177e00000
246: 177e00000
247: 177e00000
248: 177e00000
249: 177e00000
250: 177e00000
251: 177e00000
252: 177e00000
253: 177e00000
254: 177e00000
255: 177e00000
256: 177e00000
257: 177e00000
258: 177e00000
259: 177e00000
260: 177e00000
261: 177e00000
262: 177e00000
263: 177e00000
264: 177e00000
265: 177e00000
266: 177e00000
267: 177e00000
268: 177e00000
269: 177e00000
270: 177e00000
271: 177e00000
272: 177e00000
273: 177e00000
274: 177e00000
275: 177e00000
276: 177e00000
277: 177e00000
278: 177e00000
279: 177e00000
280: 177e00000
281: 177e00000
282: 177e00000
283: 177e00000
284: 177e00000
285: 177e00000
286: 177e00000
287: 177e00000
288: 177e00000
289: 177e00000
290: 177e00000
291: 177e00000
292: 177e00000
293: 177e00000
294: 177e00000
295: 177e00000
296: 177e00000
297: 177e00000
298: 177e00000
299: 177e00000
300: 177e00000
301: 177e00000
302: 177e00000
303: 177e00000
304: 11e000001
305: 11e000001
306: 177e00000
307: 177e00000
308: 177e00000
309: 177e00000
310: 177e00000
311: 177e00000
312: 177e00000
313: 177e00000
314: 177e00000
315: 177e00000
316: 177e00000
317: 177e00000
318: 177e00000
319: 177e00000
320: 177e00000
321: 177e00000
322: 181c04001
323: 102c00001
324: 177e00000
325: 177e00000
326: 177e00000
327: 177e00000
328: 177e00000
329: 177e00000
330: 177e00000
331: 177e00000
332: 177e00000
333: 177e00000
334: 177e00000
335: 177e00000
336: 119c00000
337: 11ac00000
338: 1c2060000
339: 177e00000
340: 177e00000
341: 177e00000
342: 177e00000
343: 177e00000
344: 177e00000
345: 177e00000
346: 177e00000
347: 177e00000
348: 177e00000
349: 177e00000
350: 177e00000
351: 177e00000
*******KERNEl*********
0: 177e00000
1: 177e00000
2: 181c04001
3: 102c00001
4: 177e00000
5: 177e00000
6: 177e00000
7: 177e00000
8: 177e00000
9: 177e00000
10: 177e00000
11: 177e00000
12: 177e00000
13: 177e00000
14: 177e00000
15: 177e00000
16: 119c00000
17: 11ac00000
18: 1c2060000
19: 177e00000
20: 177e00000
21: 177e00000
22: 177e00000
23: 177e00000
24: 177e00000
25: 177e00000
26: 177e00000
27: 177e00000
28: 177e00000
29: 177e00000
30: 177e00000
31: 177e00000
Store instr: 168d82004
Store instr: 100c01000
*******EPILOG*********
0: 177e00000
1: 177e00000
2: 181c04001
3: 102c00001
4: 177e00000
5: 177e00000
6: 177e00000
7: 177e00000
8: 177e00000
9: 177e00000
10: 177e00000
11: 177e00000
12: 177e00000
13: 177e00000
14: 177e00000
15: 177e00000
16: 177e00000
17: 177e00000
18: 1c2060000
19: 177e00000
20: 177e00000
21: 177e00000
22: 177e00000
23: 177e00000
24: 177e00000
25: 177e00000
26: 177e00000
27: 177e00000
28: 177e00000
29: 177e00000
30: 177e00000
31: 177e00000
32: 168d82004
33: 177e00000
34: 100c01000
35: 177e00000
36: 177e00000
37: 177e00000
38: 177e00000
39: 177e00000
40: 177e00000
41: 177e00000
42: 177e00000
43: 177e00000
44: 177e00000
45: 177e00000
46: 177e00000
47: 177e00000
48: 177e00000
49: 177e00000
50: 177e00000
51: 177e00000
52: 177e00000
53: 177e00000
54: 177e00000
55: 177e00000
56: 177e00000
57: 177e00000
58: 177e00000
59: 177e00000
60: 177e00000
61: 177e00000
62: 177e00000
63: 177e00000

View File

@ -1,21 +0,0 @@
Mapping has started
Curerent II: 2 rec_MII: 2
Trying to schedule DDG at II: 2
5
5
Feasible II is 2 Schedule Len is 2
II after scheduling is: 2
Start Placement for II = 2
Node 0 is scheduled at 1 ASAP: 0 ALAP: 1 Mod: 1
Node 1 is scheduled at 1 ASAP: 0 ALAP: 1 Mod: 1
Node 2 is scheduled at 2 ASAP: 1 ALAP: 2 Mod: 0
Node 3 is scheduled at 2 ASAP: 1 ALAP: 2 Mod: 0
Node 4 is scheduled at 3 ASAP: 2 ALAP: 3 Mod: 1
Graph has n = 80 vertices.
Find a Clique of size at least k = 5
Attempt total number 1, Clique Size: 5
MII = 2 Current II=2
Mapping is completed

View File

@ -1,33 +0,0 @@
-1
-1
2
3
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
4
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
32

View File

@ -1,7 +0,0 @@
0 29 1
1 29 1
2 4 1
3 0 1
4 10 1
5 30 1
6 30 1

View File

@ -1,10 +0,0 @@
2011168768
2011168768
2
4
22
3
1
673384
673904
676728

View File

@ -1,33 +0,0 @@
-1 0 0
-1 0 0
2 0 2
3 0 2
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
0 0 1
1 0 1
4 0 3
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
32

View File

@ -1 +0,0 @@
-2

View File

@ -1,3 +0,0 @@
107 108 0 LRE 0
108 4 0 TRU 1
6 107 0 TRU 0

View File

@ -1,4 +0,0 @@
4 10 4 1
6 30 gVar1 1
107 19 ld_add_gVar1 1
108 20 ld_data_gVar1 1

View File

@ -1,3 +0,0 @@
110 111 0 SRE 0
2 111 0 TRU 0
109 111 0 TRU 1

View File

@ -1,4 +0,0 @@
2 4 2 0 1
109 30 gVar2 0 1
110 21 st_add_gVar2 4 1
111 22 st_data_gVar2 0 1

View File

@ -1,10 +0,0 @@
3 0 1 TRU 0
5 0 0 TRU 1
2 1 1 TRU 0
5 1 0 TRU 1
1 2 0 TRU 0
5 2 0 TRU 1
0 3 0 TRU 0
5 3 0 TRU 1
3 4 0 TRU 0
6 4 0 LIE 1

View File

@ -1,7 +0,0 @@
0 29 0 0 1
1 29 1 0 1
2 4 2 0 1
3 0 3 0 1
4 10 4 0 1
5 30 ConstInt1 0 1
6 30 gVar1 4 1

View File

@ -1,32 +0,0 @@
digraph loop_12 {
{
0 [shape=box, color=red, label="0\nPHI"];
1 [shape=box, color=red, label="1\nPHI"];
2 [shape=triangle, color=purple, label="2\nShiftl"];
3 [shape=polygon, color=purple, label="3\nAdd"];
4 [shape=trapezium, color=orange, label="4\nCMPEQ"];
5 [color=black, label="ConstInt1\n"];
6 [color=black, label="gVar1\n"];
109 [color=black, label="gVar2\n"];
3 -> 0 [style=bold, color=red, label=1]
5 -> 0 [color=gray]
2 -> 1 [style=bold, color=red, label=1]
5 -> 1 [color=gray]
1 -> 2
5 -> 2 [color=gray]
0 -> 3
5 -> 3 [color=gray]
3 -> 4
6 -> 4 [color=orange, label=4]
2 -> 109 [color=orange, label=4]
}
}

View File

@ -1,5 +0,0 @@
0 1
1 1
2 1
3 1
4 1

View File

@ -1,65 +0,0 @@
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
0
1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
2
3
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
0
1
4
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
64

View File

@ -1,16 +0,0 @@
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 0

View File

@ -1,112 +0,0 @@
#!/bin/bash
############################################
############################################
## Author : Shail Dave ##
## Arizona State University ##
## ##
## Notes : Script File To Compile A Loop ##
## for its Execution on CGRA ##
## ##
############################################
############################################
#Set Architecture Parameters
#X=4
#Y=4
#R=4
X=0
Y=0
R=0
IC=0
CGRAclock=0
CPUClock=0
ALGO=""
MSA=10
MAPII=10
MAX_MAP=1000
MAX_II=50
LAMBDA=0.02
if [ -f "CGRA_config.csv" ]; then
INPUTFILE="CGRA_config.csv"
X=$(grep -w X $INPUTFILE | cut -d, -f2)
Y=$(grep -w Y $INPUTFILE | cut -d, -f2)
R=$(grep -w R $INPUTFILE | cut -d, -f2)
ALGO=$(grep -w ALGO $INPUTFILE | cut -d, -f2)
MSA=$(grep -w MSA $INPUTFILE | cut -d, -f2)
MAPII=$(grep -w MAPII $INPUTFILE | cut -d, -f2)
MAX_MAP=$(grep -w MAX_MAP $INPUTFILE | cut -d, -f2)
MAX_II=$(grep -w MAX_II $INPUTFILE | cut -d, -f2)
LAMBDA=$(grep -w LAMBDA $INPUTFILE | cut -d, -f2)
else
echo "Please include CGRA architecture file"
exit 1
fi
obj="$1"
#Setting Paths
LEVEL=../..
#toolchain="/home/shail/ccf-init"
ccf_root="$2"
script="$ccf_root/scripts"
opcodegen="$ccf_root/InstructionGenerator/insgen"
opcodegen1="$ccf_root/InstructionGenerator/falcon_insgen"
#Detect node and edge file
llvmedge="$(find . -name "*.txt" | grep -i loop | grep -i edge)"
llvmnode="$(find . -name "*.txt" | grep -i loop | grep -i node)"
echo $llvmnode
#RAMP - Scheduling and Mapping
#if [ $ALGO -eq 0 ]; then
# $script/map.sh $llvmnode $llvmedge -X $X -Y $Y -R $R
#elif [ $ALGO -eq 1 ]; then
# $script/map1.sh $llvmnode $llvmedge $X $Y $R $MODE
#elif [ $ALGO -eq 2 ]; then
# $script/map2.sh $llvmnode $llvmedge $X $Y $R $MODE
#elif [ $ALGO -eq 3 ]; then
# $script/map3.sh $llvmnode $llvmedge $X $Y $R $MODE
#else
# $script/map4.sh $llvmnode $llvmedge $X $Y $R $MODE $SCHED
#fi
pwd
find ${ccf_root}/mappings -maxdepth 1 -mindepth 1 -type d | while read dir; do
if [[ $dir == *"$ALGO" ]]; then
map="$dir/Release"
nodefile="$dir/DFGFiles"
$map/$ALGO -EDGE $llvmedge -NODE $llvmnode -X $X -Y $Y -R $R -MSA $MSA -MAPII $MAPII -MAX_MAP $MAX_MAP -MAX_II $MAX_II -LAMBDA $LAMBDA #> $schfile
$nodefile/nodefile $llvmnode DUMP_node.txt > final_node.txt
fi
done
finalnode="$(find ./ -name "*.txt" | grep -i final | grep -i node)"
node="$(find ./ -name "*.txt" | grep -i DUMP | grep -i node)"
edge="$(find ./ -name "*.txt" | grep -i DUMP | grep -i edge)"
liveoutnode="$(find ./ -name "*.txt" | grep -i liveout | grep -i node)"
liveoutedge="$(find ./ -name "*.txt" | grep -i liveout | grep -i edge)"
if [ $R -eq 0 ]; then
R=4
fi
#echo "Num regs is $R"
#Instruction Generator
echo Instruction Generator
if [ $ALGO == "FalconCrimson" ]; then
echo running FalcomCrimson
$opcodegen1 $finalnode $edge $llvmnode $llvmedge $obj prolog.sch kernel.sch epilog.sch $X $Y $R $liveoutnode $liveoutedge > cgra_instructions.txt
else
echo Running something else
#$opcodegen $finalnode $edge $llvmnode $llvmedge $obj prolog.sch kernel.sch epilog.sch $X $Y $R $liveoutnode $liveoutedge > cgra_instructions.txt
$opcodegen $finalnode $edge $llvmnode $llvmedge $obj prolog.sch kernel.sch epilog.sch $X $Y $R $liveoutnode $liveoutedge &> cgra_instructions.debug
fi

View File

@ -1 +0,0 @@
1

View File

@ -1,575 +0,0 @@
; ModuleID = 'CGRAGen.bc'
source_filename = "llvm-link"
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "armv7-none-linux-eabi"
%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, %struct._IO_codecvt*, %struct._IO_wide_data*, %struct._IO_FILE*, i8*, i32, i32, [40 x i8] }
%struct._IO_marker = type opaque
%struct._IO_codecvt = type opaque
%struct._IO_wide_data = type opaque
@.str = private unnamed_addr constant [24 x i8] c"***** %d^%d = %d *****\0A\00", align 1
@totalLoops = dso_local global i32 0, align 4
@dynamicTCVal = dso_local local_unnamed_addr global i32 0, align 4
@initCGRA = dso_local local_unnamed_addr global i32* null, align 4
@epilog = dso_local local_unnamed_addr global i32* null, align 4
@prolog = dso_local local_unnamed_addr global i32* null, align 4
@kernel = dso_local local_unnamed_addr global i32* null, align 4
@prologPtr = dso_local local_unnamed_addr global i32* null, align 4
@epilogPtr = dso_local local_unnamed_addr global i32* null, align 4
@kernelPtr = dso_local local_unnamed_addr global i32* null, align 4
@ArrPtr = dso_local local_unnamed_addr global i32* null, align 4
@pth = dso_local local_unnamed_addr global i32 0, align 4
@str = private unnamed_addr constant [34 x i8] c"from cgra.c Initialize Parameters\00", align 1
@__const.configureCGRA.directoryPath = private unnamed_addr constant [20 x i8] c"./CGRAExec/L\00\00\00\00\00\00\00\00", align 1
@.str.1 = private unnamed_addr constant [3 x i8] c"%d\00", align 1
@.str.2 = private unnamed_addr constant [16 x i8] c"/epilog_ins.bin\00", align 1
@.str.3 = private unnamed_addr constant [16 x i8] c"/prolog_ins.bin\00", align 1
@.str.4 = private unnamed_addr constant [16 x i8] c"/kernel_ins.bin\00", align 1
@.str.5 = private unnamed_addr constant [17 x i8] c"/CGRA_config.txt\00", align 1
@.str.6 = private unnamed_addr constant [3 x i8] c"rb\00", align 1
@.str.7 = private unnamed_addr constant [2 x i8] c"r\00", align 1
@.str.8 = private unnamed_addr constant [32 x i8] c"\0A**********EPISIZE %d*********\0A\00", align 1
@.str.9 = private unnamed_addr constant [32 x i8] c"\0A**********PROSIZE %d*********\0A\00", align 1
@.str.10 = private unnamed_addr constant [33 x i8] c"\0A**********KERNSIZE %d*********\0A\00", align 1
@.str.11 = private unnamed_addr constant [37 x i8] c"\0A******SIZE OF UNSIGNED LONG%d*****\0A\00", align 1
@.str.12 = private unnamed_addr constant [42 x i8] c"\0A******SIZE OF UNSIGNED LONG LONG%d*****\0A\00", align 1
@.str.13 = private unnamed_addr constant [26 x i8] c"/livevar_st_ins_count.txt\00", align 1
@.str.14 = private unnamed_addr constant [39 x i8] c"\0A************XDIM and YDim are %d, %d\0A\00", align 1
@.str.15 = private unnamed_addr constant [18 x i8] c"/kernel_count.txt\00", align 1
@.str.16 = private unnamed_addr constant [16 x i8] c"Loop Count: %d\0A\00", align 1
@.str.17 = private unnamed_addr constant [55 x i8] c"From FILE: PROLOGPC= %lx, EPILOGPC=%lx, KernelPC=%lx\0A\00", align 1
@str.34 = private unnamed_addr constant [14 x i8] c"configureCGRA\00", align 1
@.str.19 = private unnamed_addr constant [14 x i8] c"\0Aloopno = %s\0A\00", align 1
@.str.20 = private unnamed_addr constant [17 x i8] c"newTC = %d + %d\0A\00", align 1
@__const.configureCGRA.initCGRAfile = private unnamed_addr constant [40 x i8] c"./CGRAExec/L1\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1
@.str.21 = private unnamed_addr constant [14 x i8] c"/initCGRA.txt\00", align 1
@.str.22 = private unnamed_addr constant [3 x i8] c"wb\00", align 1
@.str.23 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1
@.str.24 = private unnamed_addr constant [5 x i8] c"%ld\0A\00", align 1
@str.35 = private unnamed_addr constant [16 x i8] c"checkTotalLoops\00", align 1
@__const.checkTotalLoops.myfile = private unnamed_addr constant [40 x i8] c"./CGRAExec/total_loops.txt\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1
@.str.26 = private unnamed_addr constant [3 x i8] c"%u\00", align 1
@str.36 = private unnamed_addr constant [12 x i8] c"\0A\0ArunOnCGRA\00", align 1
@str.37 = private unnamed_addr constant [19 x i8] c"\0A\0AaccelerateOnCGRA\00", align 1
@.str.30 = private unnamed_addr constant [35 x i8] c"Core will execute loop %u on CGRA\0A\00", align 1
@str.38 = private unnamed_addr constant [15 x i8] c"\0Adeleting cgra\00", align 1
@str.39 = private unnamed_addr constant [11 x i8] c"createCGRA\00", align 1
@str.40 = private unnamed_addr constant [35 x i8] c"Main thread calling CGRA thread...\00", align 1
@gVar1 = common local_unnamed_addr global i32 0
@gVar2 = common local_unnamed_addr global i32 0
; Function Attrs: nofree nounwind
define dso_local i32 @main(i32 %0, i8** nocapture readonly %1) local_unnamed_addr #0 {
call void @createCGRA()
%3 = getelementptr inbounds i8*, i8** %1, i32 1
%4 = load i8*, i8** %3, align 4, !tbaa !5
%5 = tail call i32 @strtol(i8* nocapture nonnull %4, i8** null, i32 10) #11
%6 = icmp sgt i32 %5, 1
store i32 %5, i32* @gVar1, align 4
br i1 %6, label %.preheader.preheader, label %.loopexit
.preheader.preheader: ; preds = %2
%7 = sub i32 %5, 1
%8 = sdiv i32 %7, 1
store i32 %8, i32* @dynamicTCVal, align 4
br label %9
9: ; preds = %.preheader.preheader
call void @accelerateOnCGRA(i32 1)
br label %.loopexit.loopexit
.loopexit.loopexit: ; preds = %9
br label %10
10: ; preds = %.loopexit.loopexit
%11 = load i32, i32* @gVar2, align 4
br label %.loopexit
.loopexit: ; preds = %10, %2
%12 = phi i32 [ 1, %2 ], [ %11, %10 ]
%13 = tail call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i32 0, i32 0), i32 2, i32 %5, i32 %12)
call void @deleteCGRA()
ret i32 0
}
; Function Attrs: nofree nounwind willreturn
declare dso_local i32 @strtol(i8* readonly, i8** nocapture, i32) local_unnamed_addr #1
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @printf(i8* nocapture noundef readonly, ...) local_unnamed_addr #2
; Function Attrs: nounwind
define dso_local i32 @initializeParameters(i32 %0) local_unnamed_addr #3 {
%2 = alloca [25 x i8], align 1
%3 = alloca [20 x i8], align 1
%4 = alloca [40 x i8], align 1
%5 = alloca [40 x i8], align 1
%6 = alloca [40 x i8], align 1
%7 = alloca [40 x i8], align 1
%8 = alloca [40 x i8], align 1
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca i32, align 4
%12 = alloca i32, align 4
%13 = alloca [256 x i8], align 1
%14 = alloca [40 x i8], align 1
%15 = alloca i32, align 4
%16 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str, i32 0, i32 0))
%17 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%18 = add i32 %0, -1
%19 = mul i32 %18, 7
%20 = getelementptr inbounds i32, i32* %17, i32 %19
store i32 2011168768, i32* %20, align 4, !tbaa !9
%21 = getelementptr inbounds i32, i32* %20, i32 1
store i32 2011168768, i32* %21, align 4, !tbaa !9
%22 = getelementptr inbounds i32, i32* %20, i32 2
%23 = getelementptr inbounds [25 x i8], [25 x i8]* %2, i32 0, i32 0
%24 = bitcast i32* %22 to i8*
tail call void @llvm.memset.p0i8.i64(i8* nonnull align 4 dereferenceable(20) %24, i8 0, i64 20, i1 false)
call void @llvm.lifetime.start.p0i8(i64 25, i8* nonnull %23) #11
%25 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 20, i8* nonnull %25) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(20) %25, i8* nonnull align 1 dereferenceable(20) getelementptr inbounds ([20 x i8], [20 x i8]* @__const.configureCGRA.directoryPath, i32 0, i32 0), i32 20, i1 false)
%26 = call i32 (i8*, i8*, ...) @sprintf(i8* nonnull %23, i8* nonnull dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32 %0) #11
%27 = call i8* @strcat(i8* nonnull %25, i8* nonnull %23) #11
%28 = getelementptr inbounds [40 x i8], [40 x i8]* %4, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %28) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %28, i8 0, i32 40, i1 false)
%29 = getelementptr inbounds [40 x i8], [40 x i8]* %5, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %29) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %29, i8 0, i32 40, i1 false)
%30 = getelementptr inbounds [40 x i8], [40 x i8]* %6, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %30) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %30, i8 0, i32 40, i1 false)
%31 = getelementptr inbounds [40 x i8], [40 x i8]* %7, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %31) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %31, i8 0, i32 40, i1 false)
%32 = getelementptr inbounds [40 x i8], [40 x i8]* %8, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %32) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %32, i8 0, i32 40, i1 false)
%33 = call i8* @strcat(i8* nonnull %28, i8* nonnull %25) #11
%34 = call i32 @strlen(i8* nonnull %28)
%35 = getelementptr [40 x i8], [40 x i8]* %4, i32 0, i32 %34
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(16) %35, i8* nonnull align 1 dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.2, i32 0, i32 0), i32 16, i1 false)
%36 = call i8* @strcat(i8* nonnull %29, i8* nonnull %25) #11
%37 = call i32 @strlen(i8* nonnull %29)
%38 = getelementptr [40 x i8], [40 x i8]* %5, i32 0, i32 %37
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(16) %38, i8* nonnull align 1 dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.3, i32 0, i32 0), i32 16, i1 false)
%39 = call i8* @strcat(i8* nonnull %30, i8* nonnull %25) #11
%40 = call i32 @strlen(i8* nonnull %30)
%41 = getelementptr [40 x i8], [40 x i8]* %6, i32 0, i32 %40
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(16) %41, i8* nonnull align 1 dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i32 0, i32 0), i32 16, i1 false)
%42 = call i8* @strcat(i8* nonnull %32, i8* nonnull %25) #11
%43 = call i32 @strlen(i8* nonnull %32)
%44 = getelementptr [40 x i8], [40 x i8]* %8, i32 0, i32 %43
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(17) %44, i8* nonnull align 1 dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.5, i32 0, i32 0), i32 17, i1 false)
%45 = call %struct._IO_FILE* @fopen(i8* nonnull %28, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i32 0, i32 0))
%46 = call %struct._IO_FILE* @fopen(i8* nonnull %29, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i32 0, i32 0))
%47 = call %struct._IO_FILE* @fopen(i8* nonnull %30, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i32 0, i32 0))
%48 = call %struct._IO_FILE* @fopen(i8* nonnull %32, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%49 = bitcast i32* %9 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %49) #11
%50 = bitcast i32* %10 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %50) #11
%51 = bitcast i32* %11 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %51) #11
%52 = bitcast i32* %12 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %52) #11
%53 = call i32 @fread(i8* nonnull %49, i32 4, i32 1, %struct._IO_FILE* %45)
%54 = call i32 @fread(i8* nonnull %50, i32 4, i32 1, %struct._IO_FILE* %46)
%55 = call i32 @fread(i8* nonnull %51, i32 4, i32 1, %struct._IO_FILE* %47)
%56 = load i32, i32* %9, align 4, !tbaa !9
%57 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.8, i32 0, i32 0), i32 %56)
%58 = load i32, i32* %10, align 4, !tbaa !9
%59 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.9, i32 0, i32 0), i32 %58)
%60 = load i32, i32* %11, align 4, !tbaa !9
%61 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.10, i32 0, i32 0), i32 %60)
%62 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.11, i32 0, i32 0), i32 4)
%63 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.12, i32 0, i32 0), i32 8)
%64 = shl i32 %56, 3
%65 = call noalias i8* @malloc(i32 %64) #11
store i8* %65, i8** bitcast (i32** @epilog to i8**), align 4, !tbaa !5
%66 = shl i32 %58, 3
%67 = call noalias i8* @malloc(i32 %66) #11
store i8* %67, i8** bitcast (i32** @prolog to i8**), align 4, !tbaa !5
%68 = shl i32 %60, 3
%69 = call noalias i8* @malloc(i32 %68) #11
store i8* %69, i8** bitcast (i32** @kernel to i8**), align 4, !tbaa !5
%70 = call i32 @fread(i8* %65, i32 8, i32 %56, %struct._IO_FILE* %45)
%71 = load i8*, i8** bitcast (i32** @prolog to i8**), align 4, !tbaa !5
%72 = call i32 @fread(i8* %71, i32 8, i32 %58, %struct._IO_FILE* %46)
%73 = load i8*, i8** bitcast (i32** @kernel to i8**), align 4, !tbaa !5
%74 = call i32 @fread(i8* %73, i32 8, i32 %60, %struct._IO_FILE* %47)
%75 = call i8* @strcat(i8* nonnull %31, i8* nonnull %25) #11
%76 = call i32 @strlen(i8* nonnull %31)
%77 = getelementptr [40 x i8], [40 x i8]* %7, i32 0, i32 %76
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(26) %77, i8* nonnull align 1 dereferenceable(26) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.13, i32 0, i32 0), i32 26, i1 false)
%78 = call %struct._IO_FILE* @fopen(i8* nonnull %31, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%79 = call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %78, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32* nonnull %12) #11
%80 = getelementptr inbounds [256 x i8], [256 x i8]* %13, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 256, i8* nonnull %80) #11
%81 = call i8* @fgets(i8* nonnull %80, i32 256, %struct._IO_FILE* %48)
%82 = icmp eq i8* %81, null
br i1 %82, label %.loopexit, label %.preheader.preheader
.preheader.preheader: ; preds = %1
br label %.preheader
.preheader: ; preds = %94, %.preheader.preheader
%83 = phi i32 [ %96, %94 ], [ 0, %.preheader.preheader ]
%84 = phi i32 [ %95, %94 ], [ 0, %.preheader.preheader ]
%85 = phi i32 [ %86, %94 ], [ 0, %.preheader.preheader ]
%86 = add nuw nsw i32 %85, 1
%87 = icmp eq i32 %85, 0
br i1 %87, label %88, label %90
88: ; preds = %.preheader
%89 = call i32 @strtol(i8* nocapture nonnull %80, i8** null, i32 10) #11
br label %94
90: ; preds = %.preheader
%91 = icmp eq i32 %86, 2
br i1 %91, label %92, label %.loopexit.loopexit
92: ; preds = %90
%93 = call i32 @strtol(i8* nocapture nonnull %80, i8** null, i32 10) #11
br label %94
94: ; preds = %92, %88
%95 = phi i32 [ %84, %88 ], [ %93, %92 ]
%96 = phi i32 [ %89, %88 ], [ %83, %92 ]
%97 = call i8* @fgets(i8* nonnull %80, i32 256, %struct._IO_FILE* %48)
%98 = icmp eq i8* %97, null
br i1 %98, label %.loopexit.loopexit, label %.preheader, !llvm.loop !11
.loopexit.loopexit: ; preds = %94, %90
%.ph = phi i32 [ %95, %94 ], [ %84, %90 ]
%.ph6 = phi i32 [ %96, %94 ], [ %83, %90 ]
br label %.loopexit
.loopexit: ; preds = %.loopexit.loopexit, %1
%99 = phi i32 [ 0, %1 ], [ %.ph, %.loopexit.loopexit ]
%100 = phi i32 [ 0, %1 ], [ %.ph6, %.loopexit.loopexit ]
%101 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.14, i32 0, i32 0), i32 %100, i32 %99)
%102 = mul nsw i32 %100, %99
%103 = sdiv i32 %60, %102
%104 = sdiv i32 %56, %102
%105 = sdiv i32 %58, %102
%106 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%107 = getelementptr inbounds i32, i32* %106, i32 %19
%108 = getelementptr inbounds i32, i32* %107, i32 2
store i32 %103, i32* %108, align 4, !tbaa !9
%109 = getelementptr inbounds i32, i32* %107, i32 3
store i32 %104, i32* %109, align 4, !tbaa !9
%110 = getelementptr inbounds i32, i32* %107, i32 4
store i32 %105, i32* %110, align 4, !tbaa !9
%111 = load i32, i32* %12, align 4, !tbaa !9
%112 = sdiv i32 %111, %102
%113 = getelementptr inbounds i32, i32* %107, i32 6
store i32 %112, i32* %113, align 4, !tbaa !9
%114 = call i32 @fclose(%struct._IO_FILE* %45)
%115 = call i32 @fclose(%struct._IO_FILE* %46)
%116 = call i32 @fclose(%struct._IO_FILE* %47)
%117 = call i32 @fclose(%struct._IO_FILE* %78)
%118 = call i32 @fclose(%struct._IO_FILE* %48)
%119 = getelementptr inbounds [40 x i8], [40 x i8]* %14, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %119) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %119, i8 0, i32 40, i1 false)
%120 = call i8* @strcat(i8* nonnull %119, i8* nonnull %25) #11
%121 = call i32 @strlen(i8* nonnull %119)
%122 = getelementptr [40 x i8], [40 x i8]* %14, i32 0, i32 %121
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(18) %122, i8* nonnull align 1 dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.15, i32 0, i32 0), i32 18, i1 false)
%123 = bitcast i32* %15 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %123) #11
store i32 0, i32* %15, align 4, !tbaa !9
%124 = call %struct._IO_FILE* @fopen(i8* nonnull %119, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%125 = call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %124, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32* nonnull %15) #11
%126 = call i32 @fclose(%struct._IO_FILE* %124)
%127 = load i32, i32* %15, align 4, !tbaa !9
%128 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i32 0, i32 0), i32 %127)
%129 = load i32, i32* %15, align 4, !tbaa !9
%130 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%131 = getelementptr inbounds i32, i32* %130, i32 %19
%132 = getelementptr inbounds i32, i32* %131, i32 5
store i32 %129, i32* %132, align 4, !tbaa !9
%133 = load i32*, i32** @prolog, align 4, !tbaa !5
%134 = ptrtoint i32* %133 to i32
%135 = load i32*, i32** @epilog, align 4, !tbaa !5
%136 = ptrtoint i32* %135 to i32
%137 = load i32*, i32** @kernel, align 4, !tbaa !5
%138 = ptrtoint i32* %137 to i32
%139 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.17, i32 0, i32 0), i32 %134, i32 %136, i32 %138)
%140 = load i32*, i32** @prolog, align 4, !tbaa !5
%141 = ptrtoint i32* %140 to i32
%142 = load i32*, i32** @prologPtr, align 4, !tbaa !5
%143 = getelementptr inbounds i32, i32* %142, i32 %18
store i32 %141, i32* %143, align 4, !tbaa !14
%144 = load i32*, i32** @epilog, align 4, !tbaa !5
%145 = ptrtoint i32* %144 to i32
%146 = load i32*, i32** @epilogPtr, align 4, !tbaa !5
%147 = getelementptr inbounds i32, i32* %146, i32 %18
store i32 %145, i32* %147, align 4, !tbaa !14
%148 = load i32*, i32** @kernel, align 4, !tbaa !5
%149 = ptrtoint i32* %148 to i32
%150 = load i32*, i32** @kernelPtr, align 4, !tbaa !5
%151 = getelementptr inbounds i32, i32* %150, i32 %18
store i32 %149, i32* %151, align 4, !tbaa !14
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %123) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %119) #11
call void @llvm.lifetime.end.p0i8(i64 256, i8* nonnull %80) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %52) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %51) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %50) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %49) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %32) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %31) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %30) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %29) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %28) #11
call void @llvm.lifetime.end.p0i8(i64 20, i8* nonnull %25) #11
call void @llvm.lifetime.end.p0i8(i64 25, i8* nonnull %23) #11
ret i32 0
}
; Function Attrs: nofree nounwind
declare noundef i32 @puts(i8* nocapture noundef readonly) local_unnamed_addr #4
; Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #5
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #6
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i32, i1 immarg) #6
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @sprintf(i8* noalias nocapture noundef writeonly, i8* nocapture noundef readonly, ...) local_unnamed_addr #2
; Function Attrs: argmemonly nofree nounwind willreturn
declare dso_local i8* @strcat(i8* noalias returned writeonly, i8* noalias nocapture readonly) local_unnamed_addr #7
; Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly
declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1 immarg) #5
; Function Attrs: argmemonly nofree nounwind readonly willreturn
declare i32 @strlen(i8* nocapture) local_unnamed_addr #8
; Function Attrs: nofree nounwind
declare dso_local noalias noundef %struct._IO_FILE* @fopen(i8* nocapture noundef readonly, i8* nocapture noundef readonly) local_unnamed_addr #2
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @fread(i8* nocapture noundef, i32 noundef, i32 noundef, %struct._IO_FILE* nocapture noundef) local_unnamed_addr #2
; Function Attrs: inaccessiblememonly nofree nounwind willreturn
declare dso_local noalias noundef i8* @malloc(i32) local_unnamed_addr #9
declare dso_local i32 @__isoc99_fscanf(%struct._IO_FILE*, i8*, ...) local_unnamed_addr #10
; Function Attrs: nofree nounwind
declare dso_local noundef i8* @fgets(i8* noundef, i32 noundef, %struct._IO_FILE* nocapture noundef) local_unnamed_addr #2
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @fclose(%struct._IO_FILE* nocapture noundef) local_unnamed_addr #2
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #6
; Function Attrs: nofree nounwind
define dso_local i32 @configureCGRA(i32 %0) local_unnamed_addr #0 {
%2 = alloca [25 x i8], align 1
%3 = alloca [20 x i8], align 1
%4 = alloca [40 x i8], align 1
%5 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @str.34, i32 0, i32 0))
%6 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%7 = add i32 %0, -1
%8 = mul i32 %7, 7
%9 = getelementptr inbounds i32, i32* %6, i32 %8
%10 = getelementptr inbounds i32, i32* %9, i32 5
%11 = load i32, i32* %10, align 4, !tbaa !9
%12 = getelementptr inbounds [25 x i8], [25 x i8]* %2, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 25, i8* nonnull %12) #11
%13 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 20, i8* nonnull %13) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(20) %13, i8* nonnull align 1 dereferenceable(20) getelementptr inbounds ([20 x i8], [20 x i8]* @__const.configureCGRA.directoryPath, i32 0, i32 0), i32 20, i1 false)
%14 = call i32 (i8*, i8*, ...) @sprintf(i8* nonnull %12, i8* nonnull dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32 %0) #11
%15 = call i8* @strcat(i8* nonnull %13, i8* nonnull %12) #11
%16 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.19, i32 0, i32 0), i8* nonnull %12)
%17 = icmp slt i32 %11, 1
br i1 %17, label %18, label %25
18: ; preds = %1
%19 = load i32, i32* @dynamicTCVal, align 4, !tbaa !9
%20 = add nsw i32 %19, %11
%21 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.20, i32 0, i32 0), i32 %11, i32 %19)
%22 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%23 = getelementptr inbounds i32, i32* %22, i32 %8
%24 = getelementptr inbounds i32, i32* %23, i32 5
store i32 %20, i32* %24, align 4, !tbaa !9
br label %25
25: ; preds = %18, %1
%26 = getelementptr inbounds [40 x i8], [40 x i8]* %4, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %26) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %26, i8* nonnull align 1 dereferenceable(40) getelementptr inbounds ([40 x i8], [40 x i8]* @__const.configureCGRA.initCGRAfile, i32 0, i32 0), i32 40, i1 false)
%27 = call i32 @strlen(i8* nonnull %26)
%28 = getelementptr [40 x i8], [40 x i8]* %4, i32 0, i32 %27
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(14) %28, i8* nonnull align 1 dereferenceable(14) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i32 0, i32 0), i32 14, i1 false)
%29 = call %struct._IO_FILE* @fopen(i8* nonnull %26, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.22, i32 0, i32 0))
br label %30
30: ; preds = %30, %25
%31 = phi i32 [ 0, %25 ], [ %37, %30 ]
%32 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%33 = getelementptr inbounds i32, i32* %32, i32 %8
%34 = getelementptr inbounds i32, i32* %33, i32 %31
%35 = load i32, i32* %34, align 4, !tbaa !9
%36 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i32 0, i32 0), i32 %35)
%37 = add nuw nsw i32 %31, 1
%38 = icmp eq i32 %37, 7
br i1 %38, label %39, label %30, !llvm.loop !16
39: ; preds = %30
%40 = load i32*, i32** @epilogPtr, align 4, !tbaa !5
%41 = getelementptr inbounds i32, i32* %40, i32 %7
%42 = load i32, i32* %41, align 4, !tbaa !14
%43 = zext i32 %42 to i64
%44 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i32 0, i32 0), i64 %43)
%45 = load i32*, i32** @prologPtr, align 4, !tbaa !5
%46 = getelementptr inbounds i32, i32* %45, i32 %7
%47 = load i32, i32* %46, align 4, !tbaa !14
%48 = zext i32 %47 to i64
%49 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i32 0, i32 0), i64 %48)
%50 = load i32*, i32** @kernelPtr, align 4, !tbaa !5
%51 = getelementptr inbounds i32, i32* %50, i32 %7
%52 = load i32, i32* %51, align 4, !tbaa !14
%53 = zext i32 %52 to i64
%54 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i32 0, i32 0), i64 %53)
%55 = call i32 @fclose(%struct._IO_FILE* %29)
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %26) #11
call void @llvm.lifetime.end.p0i8(i64 20, i8* nonnull %13) #11
call void @llvm.lifetime.end.p0i8(i64 25, i8* nonnull %12) #11
ret i32 0
}
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @fprintf(%struct._IO_FILE* nocapture noundef, i8* nocapture noundef readonly, ...) local_unnamed_addr #2
; Function Attrs: nounwind
define dso_local void @checkTotalLoops() local_unnamed_addr #3 {
%1 = alloca [40 x i8], align 1
%2 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.35, i32 0, i32 0))
%3 = getelementptr inbounds [40 x i8], [40 x i8]* %1, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %3) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %3, i8* nonnull align 1 dereferenceable(40) getelementptr inbounds ([40 x i8], [40 x i8]* @__const.checkTotalLoops.myfile, i32 0, i32 0), i32 40, i1 false)
%4 = call %struct._IO_FILE* @fopen(i8* nonnull %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%5 = tail call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %4, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i32 0, i32 0), i32* nonnull @totalLoops) #11
%6 = tail call i32 @fclose(%struct._IO_FILE* %4)
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %3) #11
ret void
}
; Function Attrs: nounwind
define dso_local i8* @runOnCGRA() local_unnamed_addr #3 {
%1 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.36, i32 0, i32 0))
tail call void asm sideeffect "mov r11,$0", "r"(i32 15) #11, !srcloc !17
ret i8* null
}
; Function Attrs: nounwind
define dso_local void @accelerateOnCGRA(i32 %0) local_unnamed_addr #3 {
%2 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str.37, i32 0, i32 0))
%3 = tail call i32 @configureCGRA(i32 %0)
%4 = tail call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.30, i32 0, i32 0), i32 %0)
%5 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.36, i32 0, i32 0)) #11
tail call void asm sideeffect "mov r11,$0", "r"(i32 15) #11, !srcloc !17
ret void
}
; Function Attrs: nofree nounwind
define dso_local void @deleteCGRA() local_unnamed_addr #0 {
%1 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @str.38, i32 0, i32 0))
ret void
}
; Function Attrs: nounwind
define dso_local void @createCGRA() local_unnamed_addr #3 {
%1 = alloca [40 x i8], align 1
%2 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.39, i32 0, i32 0))
%3 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.35, i32 0, i32 0)) #11
%4 = getelementptr inbounds [40 x i8], [40 x i8]* %1, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %4) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %4, i8* nonnull align 1 dereferenceable(40) getelementptr inbounds ([40 x i8], [40 x i8]* @__const.checkTotalLoops.myfile, i32 0, i32 0), i32 40, i1 false) #11
%5 = call %struct._IO_FILE* @fopen(i8* nonnull %4, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0)) #11
%6 = tail call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %5, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i32 0, i32 0), i32* nonnull @totalLoops) #11
%7 = tail call i32 @fclose(%struct._IO_FILE* %5) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %4) #11
%8 = load i32, i32* @totalLoops, align 4, !tbaa !9
%9 = mul i32 %8, 28
%10 = tail call noalias i8* @malloc(i32 %9) #11
store i8* %10, i8** bitcast (i32** @initCGRA to i8**), align 4, !tbaa !5
%11 = shl i32 %8, 2
%12 = tail call noalias i8* @malloc(i32 %11) #11
store i8* %12, i8** bitcast (i32** @prologPtr to i8**), align 4, !tbaa !5
%13 = tail call noalias i8* @malloc(i32 %11) #11
store i8* %13, i8** bitcast (i32** @kernelPtr to i8**), align 4, !tbaa !5
%14 = tail call noalias i8* @malloc(i32 %11) #11
store i8* %14, i8** bitcast (i32** @epilogPtr to i8**), align 4, !tbaa !5
%15 = icmp eq i32 %8, 0
br i1 %15, label %.loopexit, label %.preheader.preheader
.preheader.preheader: ; preds = %0
br label %.preheader
.preheader: ; preds = %.preheader, %.preheader.preheader
%16 = phi i32 [ %18, %.preheader ], [ 1, %.preheader.preheader ]
%17 = tail call i32 @initializeParameters(i32 %16)
%18 = add i32 %16, 1
%19 = load i32, i32* @totalLoops, align 4, !tbaa !9
%20 = icmp ugt i32 %18, %19
br i1 %20, label %.loopexit.loopexit, label %.preheader, !llvm.loop !18
.loopexit.loopexit: ; preds = %.preheader
br label %.loopexit
.loopexit: ; preds = %.loopexit.loopexit, %0
%21 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.40, i32 0, i32 0))
ret void
}
attributes #0 = { nofree nounwind "disable-tail-calls"="false" "frame-pointer"="none" "min-legal-vector-width"="0" "no-jump-tables"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #1 = { nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #2 = { nofree nounwind "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #3 = { nounwind "disable-tail-calls"="false" "frame-pointer"="none" "min-legal-vector-width"="0" "no-jump-tables"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #4 = { nofree nounwind }
attributes #5 = { argmemonly nofree nosync nounwind willreturn writeonly }
attributes #6 = { argmemonly nofree nosync nounwind willreturn }
attributes #7 = { argmemonly nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #8 = { argmemonly nofree nounwind readonly willreturn }
attributes #9 = { inaccessiblememonly nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #10 = { "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #11 = { nounwind }
!llvm.ident = !{!0, !0}
!llvm.module.flags = !{!1, !2, !3, !4}
!0 = !{!"clang version 13.0.0 (https://github.com/MPSLab-ASU/CCF-20.04/ 05285de7579f417a4d73ad832b8f4cc497f25235)"}
!1 = !{i32 7, !"Dwarf Version", i32 4}
!2 = !{i32 2, !"Debug Info Version", i32 3}
!3 = !{i32 1, !"wchar_size", i32 4}
!4 = !{i32 1, !"min_enum_size", i32 4}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12, !13}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.unroll.disable"}
!14 = !{!15, !15, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = distinct !{!16, !12, !13}
!17 = !{i32 5341}
!18 = distinct !{!18, !12, !13}

View File

@ -6,7 +6,7 @@ Cclock,0.7
CPUclock,2 CPUclock,2
Mem,8GB Mem,8GB
MODE,0 MODE,0
ALGO,RAMP ALGO,GraphMinor
MSA,10 MSA,10
MAPII,10 MAPII,10
MAX_MAP,1000 MAX_MAP,1000

1 X 4
6 CPUclock 2
7 Mem 8GB
8 MODE 0
9 ALGO RAMP GraphMinor
10 MSA 10
11 MAPII 10
12 MAX_MAP 1000

View File

@ -1,579 +0,0 @@
; ModuleID = 'CondDDGGen.bc'
source_filename = "llvm-link"
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "armv7-none-linux-eabi"
%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, %struct._IO_codecvt*, %struct._IO_wide_data*, %struct._IO_FILE*, i8*, i32, i32, [40 x i8] }
%struct._IO_marker = type opaque
%struct._IO_codecvt = type opaque
%struct._IO_wide_data = type opaque
@.str = private unnamed_addr constant [24 x i8] c"***** %d^%d = %d *****\0A\00", align 1
@totalLoops = dso_local global i32 0, align 4
@dynamicTCVal = dso_local local_unnamed_addr global i32 0, align 4
@initCGRA = dso_local local_unnamed_addr global i32* null, align 4
@epilog = dso_local local_unnamed_addr global i32* null, align 4
@prolog = dso_local local_unnamed_addr global i32* null, align 4
@kernel = dso_local local_unnamed_addr global i32* null, align 4
@prologPtr = dso_local local_unnamed_addr global i32* null, align 4
@epilogPtr = dso_local local_unnamed_addr global i32* null, align 4
@kernelPtr = dso_local local_unnamed_addr global i32* null, align 4
@ArrPtr = dso_local local_unnamed_addr global i32* null, align 4
@pth = dso_local local_unnamed_addr global i32 0, align 4
@str = private unnamed_addr constant [34 x i8] c"from cgra.c Initialize Parameters\00", align 1
@__const.configureCGRA.directoryPath = private unnamed_addr constant [20 x i8] c"./CGRAExec/L\00\00\00\00\00\00\00\00", align 1
@.str.1 = private unnamed_addr constant [3 x i8] c"%d\00", align 1
@.str.2 = private unnamed_addr constant [16 x i8] c"/epilog_ins.bin\00", align 1
@.str.3 = private unnamed_addr constant [16 x i8] c"/prolog_ins.bin\00", align 1
@.str.4 = private unnamed_addr constant [16 x i8] c"/kernel_ins.bin\00", align 1
@.str.5 = private unnamed_addr constant [17 x i8] c"/CGRA_config.txt\00", align 1
@.str.6 = private unnamed_addr constant [3 x i8] c"rb\00", align 1
@.str.7 = private unnamed_addr constant [2 x i8] c"r\00", align 1
@.str.8 = private unnamed_addr constant [32 x i8] c"\0A**********EPISIZE %d*********\0A\00", align 1
@.str.9 = private unnamed_addr constant [32 x i8] c"\0A**********PROSIZE %d*********\0A\00", align 1
@.str.10 = private unnamed_addr constant [33 x i8] c"\0A**********KERNSIZE %d*********\0A\00", align 1
@.str.11 = private unnamed_addr constant [37 x i8] c"\0A******SIZE OF UNSIGNED LONG%d*****\0A\00", align 1
@.str.12 = private unnamed_addr constant [42 x i8] c"\0A******SIZE OF UNSIGNED LONG LONG%d*****\0A\00", align 1
@.str.13 = private unnamed_addr constant [26 x i8] c"/livevar_st_ins_count.txt\00", align 1
@.str.14 = private unnamed_addr constant [39 x i8] c"\0A************XDIM and YDim are %d, %d\0A\00", align 1
@.str.15 = private unnamed_addr constant [18 x i8] c"/kernel_count.txt\00", align 1
@.str.16 = private unnamed_addr constant [16 x i8] c"Loop Count: %d\0A\00", align 1
@.str.17 = private unnamed_addr constant [55 x i8] c"From FILE: PROLOGPC= %lx, EPILOGPC=%lx, KernelPC=%lx\0A\00", align 1
@str.34 = private unnamed_addr constant [14 x i8] c"configureCGRA\00", align 1
@.str.19 = private unnamed_addr constant [14 x i8] c"\0Aloopno = %s\0A\00", align 1
@.str.20 = private unnamed_addr constant [17 x i8] c"newTC = %d + %d\0A\00", align 1
@__const.configureCGRA.initCGRAfile = private unnamed_addr constant [40 x i8] c"./CGRAExec/L1\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1
@.str.21 = private unnamed_addr constant [14 x i8] c"/initCGRA.txt\00", align 1
@.str.22 = private unnamed_addr constant [3 x i8] c"wb\00", align 1
@.str.23 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1
@.str.24 = private unnamed_addr constant [5 x i8] c"%ld\0A\00", align 1
@str.35 = private unnamed_addr constant [16 x i8] c"checkTotalLoops\00", align 1
@__const.checkTotalLoops.myfile = private unnamed_addr constant [40 x i8] c"./CGRAExec/total_loops.txt\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1
@.str.26 = private unnamed_addr constant [3 x i8] c"%u\00", align 1
@str.36 = private unnamed_addr constant [12 x i8] c"\0A\0ArunOnCGRA\00", align 1
@str.37 = private unnamed_addr constant [19 x i8] c"\0A\0AaccelerateOnCGRA\00", align 1
@.str.30 = private unnamed_addr constant [35 x i8] c"Core will execute loop %u on CGRA\0A\00", align 1
@str.38 = private unnamed_addr constant [15 x i8] c"\0Adeleting cgra\00", align 1
@str.39 = private unnamed_addr constant [11 x i8] c"createCGRA\00", align 1
@str.40 = private unnamed_addr constant [35 x i8] c"Main thread calling CGRA thread...\00", align 1
@gVar1 = common local_unnamed_addr global i32 0
@gVar2 = common local_unnamed_addr global i32 0
; Function Attrs: nofree nounwind
define dso_local i32 @main(i32 %0, i8** nocapture readonly %1) local_unnamed_addr #0 {
%3 = getelementptr inbounds i8*, i8** %1, i32 1
%4 = load i8*, i8** %3, align 4, !tbaa !5
%5 = tail call i32 @strtol(i8* nocapture nonnull %4, i8** null, i32 10) #11
%6 = icmp sgt i32 %5, 1
store i32 %5, i32* @gVar1, align 4
br i1 %6, label %.preheader.preheader, label %.loopexit
.preheader.preheader: ; preds = %2
%7 = sub i32 %5, 1
%8 = sdiv i32 %7, 1
store i32 %8, i32* @dynamicTCVal, align 4
br label %.preheader
.loopexit.loopexit: ; preds = %.preheader
br label %9
9: ; preds = %.loopexit.loopexit
%10 = load i32, i32* @gVar2, align 4
br label %.loopexit
.loopexit: ; preds = %9, %2
%11 = phi i32 [ 1, %2 ], [ %10, %9 ]
%12 = tail call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i32 0, i32 0), i32 2, i32 %5, i32 %11)
ret i32 0
.preheader: ; preds = %.preheader, %.preheader.preheader
%13 = phi i32 [ %16, %.preheader ], [ 1, %.preheader.preheader ]
%14 = phi i32 [ %15, %.preheader ], [ 1, %.preheader.preheader ]
%15 = shl nsw i32 %14, 1
%16 = add nuw nsw i32 %13, 1
%17 = icmp eq i32 %16, %5
br i1 %17, label %.loopexit.loopexit, label %.preheader, !llvm.loop !9
}
; Function Attrs: nofree nounwind willreturn
declare dso_local i32 @strtol(i8* readonly, i8** nocapture, i32) local_unnamed_addr #1
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @printf(i8* nocapture noundef readonly, ...) local_unnamed_addr #2
; Function Attrs: nounwind
define dso_local i32 @initializeParameters(i32 %0) local_unnamed_addr #3 {
%2 = alloca [25 x i8], align 1
%3 = alloca [20 x i8], align 1
%4 = alloca [40 x i8], align 1
%5 = alloca [40 x i8], align 1
%6 = alloca [40 x i8], align 1
%7 = alloca [40 x i8], align 1
%8 = alloca [40 x i8], align 1
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca i32, align 4
%12 = alloca i32, align 4
%13 = alloca [256 x i8], align 1
%14 = alloca [40 x i8], align 1
%15 = alloca i32, align 4
%16 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str, i32 0, i32 0))
%17 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%18 = add i32 %0, -1
%19 = mul i32 %18, 7
%20 = getelementptr inbounds i32, i32* %17, i32 %19
store i32 2011168768, i32* %20, align 4, !tbaa !13
%21 = getelementptr inbounds i32, i32* %20, i32 1
store i32 2011168768, i32* %21, align 4, !tbaa !13
%22 = getelementptr inbounds i32, i32* %20, i32 2
%23 = getelementptr inbounds [25 x i8], [25 x i8]* %2, i32 0, i32 0
%24 = bitcast i32* %22 to i8*
tail call void @llvm.memset.p0i8.i64(i8* nonnull align 4 dereferenceable(20) %24, i8 0, i64 20, i1 false)
call void @llvm.lifetime.start.p0i8(i64 25, i8* nonnull %23) #11
%25 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 20, i8* nonnull %25) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(20) %25, i8* nonnull align 1 dereferenceable(20) getelementptr inbounds ([20 x i8], [20 x i8]* @__const.configureCGRA.directoryPath, i32 0, i32 0), i32 20, i1 false)
%26 = call i32 (i8*, i8*, ...) @sprintf(i8* nonnull %23, i8* nonnull dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32 %0) #11
%27 = call i8* @strcat(i8* nonnull %25, i8* nonnull %23) #11
%28 = getelementptr inbounds [40 x i8], [40 x i8]* %4, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %28) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %28, i8 0, i32 40, i1 false)
%29 = getelementptr inbounds [40 x i8], [40 x i8]* %5, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %29) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %29, i8 0, i32 40, i1 false)
%30 = getelementptr inbounds [40 x i8], [40 x i8]* %6, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %30) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %30, i8 0, i32 40, i1 false)
%31 = getelementptr inbounds [40 x i8], [40 x i8]* %7, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %31) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %31, i8 0, i32 40, i1 false)
%32 = getelementptr inbounds [40 x i8], [40 x i8]* %8, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %32) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %32, i8 0, i32 40, i1 false)
%33 = call i8* @strcat(i8* nonnull %28, i8* nonnull %25) #11
%34 = call i32 @strlen(i8* nonnull %28)
%35 = getelementptr [40 x i8], [40 x i8]* %4, i32 0, i32 %34
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(16) %35, i8* nonnull align 1 dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.2, i32 0, i32 0), i32 16, i1 false)
%36 = call i8* @strcat(i8* nonnull %29, i8* nonnull %25) #11
%37 = call i32 @strlen(i8* nonnull %29)
%38 = getelementptr [40 x i8], [40 x i8]* %5, i32 0, i32 %37
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(16) %38, i8* nonnull align 1 dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.3, i32 0, i32 0), i32 16, i1 false)
%39 = call i8* @strcat(i8* nonnull %30, i8* nonnull %25) #11
%40 = call i32 @strlen(i8* nonnull %30)
%41 = getelementptr [40 x i8], [40 x i8]* %6, i32 0, i32 %40
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(16) %41, i8* nonnull align 1 dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i32 0, i32 0), i32 16, i1 false)
%42 = call i8* @strcat(i8* nonnull %32, i8* nonnull %25) #11
%43 = call i32 @strlen(i8* nonnull %32)
%44 = getelementptr [40 x i8], [40 x i8]* %8, i32 0, i32 %43
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(17) %44, i8* nonnull align 1 dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.5, i32 0, i32 0), i32 17, i1 false)
%45 = call %struct._IO_FILE* @fopen(i8* nonnull %28, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i32 0, i32 0))
%46 = call %struct._IO_FILE* @fopen(i8* nonnull %29, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i32 0, i32 0))
%47 = call %struct._IO_FILE* @fopen(i8* nonnull %30, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i32 0, i32 0))
%48 = call %struct._IO_FILE* @fopen(i8* nonnull %32, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%49 = bitcast i32* %9 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %49) #11
%50 = bitcast i32* %10 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %50) #11
%51 = bitcast i32* %11 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %51) #11
%52 = bitcast i32* %12 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %52) #11
%53 = call i32 @fread(i8* nonnull %49, i32 4, i32 1, %struct._IO_FILE* %45)
%54 = call i32 @fread(i8* nonnull %50, i32 4, i32 1, %struct._IO_FILE* %46)
%55 = call i32 @fread(i8* nonnull %51, i32 4, i32 1, %struct._IO_FILE* %47)
%56 = load i32, i32* %9, align 4, !tbaa !13
%57 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.8, i32 0, i32 0), i32 %56)
%58 = load i32, i32* %10, align 4, !tbaa !13
%59 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.9, i32 0, i32 0), i32 %58)
%60 = load i32, i32* %11, align 4, !tbaa !13
%61 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.10, i32 0, i32 0), i32 %60)
%62 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.11, i32 0, i32 0), i32 4)
%63 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.12, i32 0, i32 0), i32 8)
%64 = shl i32 %56, 3
%65 = call noalias i8* @malloc(i32 %64) #11
store i8* %65, i8** bitcast (i32** @epilog to i8**), align 4, !tbaa !5
%66 = shl i32 %58, 3
%67 = call noalias i8* @malloc(i32 %66) #11
store i8* %67, i8** bitcast (i32** @prolog to i8**), align 4, !tbaa !5
%68 = shl i32 %60, 3
%69 = call noalias i8* @malloc(i32 %68) #11
store i8* %69, i8** bitcast (i32** @kernel to i8**), align 4, !tbaa !5
%70 = call i32 @fread(i8* %65, i32 8, i32 %56, %struct._IO_FILE* %45)
%71 = load i8*, i8** bitcast (i32** @prolog to i8**), align 4, !tbaa !5
%72 = call i32 @fread(i8* %71, i32 8, i32 %58, %struct._IO_FILE* %46)
%73 = load i8*, i8** bitcast (i32** @kernel to i8**), align 4, !tbaa !5
%74 = call i32 @fread(i8* %73, i32 8, i32 %60, %struct._IO_FILE* %47)
%75 = call i8* @strcat(i8* nonnull %31, i8* nonnull %25) #11
%76 = call i32 @strlen(i8* nonnull %31)
%77 = getelementptr [40 x i8], [40 x i8]* %7, i32 0, i32 %76
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(26) %77, i8* nonnull align 1 dereferenceable(26) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.13, i32 0, i32 0), i32 26, i1 false)
%78 = call %struct._IO_FILE* @fopen(i8* nonnull %31, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%79 = call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %78, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32* nonnull %12) #11
%80 = getelementptr inbounds [256 x i8], [256 x i8]* %13, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 256, i8* nonnull %80) #11
%81 = call i8* @fgets(i8* nonnull %80, i32 256, %struct._IO_FILE* %48)
%82 = icmp eq i8* %81, null
br i1 %82, label %.loopexit, label %.preheader.preheader
.preheader.preheader: ; preds = %1
br label %.preheader
.preheader: ; preds = %94, %.preheader.preheader
%83 = phi i32 [ %96, %94 ], [ 0, %.preheader.preheader ]
%84 = phi i32 [ %95, %94 ], [ 0, %.preheader.preheader ]
%85 = phi i32 [ %86, %94 ], [ 0, %.preheader.preheader ]
%86 = add nuw nsw i32 %85, 1
%87 = icmp eq i32 %85, 0
br i1 %87, label %88, label %90
88: ; preds = %.preheader
%89 = call i32 @strtol(i8* nocapture nonnull %80, i8** null, i32 10) #11
br label %94
90: ; preds = %.preheader
%91 = icmp eq i32 %86, 2
br i1 %91, label %92, label %.loopexit.loopexit
92: ; preds = %90
%93 = call i32 @strtol(i8* nocapture nonnull %80, i8** null, i32 10) #11
br label %94
94: ; preds = %92, %88
%95 = phi i32 [ %84, %88 ], [ %93, %92 ]
%96 = phi i32 [ %89, %88 ], [ %83, %92 ]
%97 = call i8* @fgets(i8* nonnull %80, i32 256, %struct._IO_FILE* %48)
%98 = icmp eq i8* %97, null
br i1 %98, label %.loopexit.loopexit, label %.preheader, !llvm.loop !15
.loopexit.loopexit: ; preds = %94, %90
%.ph = phi i32 [ %95, %94 ], [ %84, %90 ]
%.ph6 = phi i32 [ %96, %94 ], [ %83, %90 ]
br label %.loopexit
.loopexit: ; preds = %.loopexit.loopexit, %1
%99 = phi i32 [ 0, %1 ], [ %.ph, %.loopexit.loopexit ]
%100 = phi i32 [ 0, %1 ], [ %.ph6, %.loopexit.loopexit ]
%101 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.14, i32 0, i32 0), i32 %100, i32 %99)
%102 = mul nsw i32 %100, %99
%103 = sdiv i32 %60, %102
%104 = sdiv i32 %56, %102
%105 = sdiv i32 %58, %102
%106 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%107 = getelementptr inbounds i32, i32* %106, i32 %19
%108 = getelementptr inbounds i32, i32* %107, i32 2
store i32 %103, i32* %108, align 4, !tbaa !13
%109 = getelementptr inbounds i32, i32* %107, i32 3
store i32 %104, i32* %109, align 4, !tbaa !13
%110 = getelementptr inbounds i32, i32* %107, i32 4
store i32 %105, i32* %110, align 4, !tbaa !13
%111 = load i32, i32* %12, align 4, !tbaa !13
%112 = sdiv i32 %111, %102
%113 = getelementptr inbounds i32, i32* %107, i32 6
store i32 %112, i32* %113, align 4, !tbaa !13
%114 = call i32 @fclose(%struct._IO_FILE* %45)
%115 = call i32 @fclose(%struct._IO_FILE* %46)
%116 = call i32 @fclose(%struct._IO_FILE* %47)
%117 = call i32 @fclose(%struct._IO_FILE* %78)
%118 = call i32 @fclose(%struct._IO_FILE* %48)
%119 = getelementptr inbounds [40 x i8], [40 x i8]* %14, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %119) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %119, i8 0, i32 40, i1 false)
%120 = call i8* @strcat(i8* nonnull %119, i8* nonnull %25) #11
%121 = call i32 @strlen(i8* nonnull %119)
%122 = getelementptr [40 x i8], [40 x i8]* %14, i32 0, i32 %121
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(18) %122, i8* nonnull align 1 dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.15, i32 0, i32 0), i32 18, i1 false)
%123 = bitcast i32* %15 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %123) #11
store i32 0, i32* %15, align 4, !tbaa !13
%124 = call %struct._IO_FILE* @fopen(i8* nonnull %119, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%125 = call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %124, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32* nonnull %15) #11
%126 = call i32 @fclose(%struct._IO_FILE* %124)
%127 = load i32, i32* %15, align 4, !tbaa !13
%128 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i32 0, i32 0), i32 %127)
%129 = load i32, i32* %15, align 4, !tbaa !13
%130 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%131 = getelementptr inbounds i32, i32* %130, i32 %19
%132 = getelementptr inbounds i32, i32* %131, i32 5
store i32 %129, i32* %132, align 4, !tbaa !13
%133 = load i32*, i32** @prolog, align 4, !tbaa !5
%134 = ptrtoint i32* %133 to i32
%135 = load i32*, i32** @epilog, align 4, !tbaa !5
%136 = ptrtoint i32* %135 to i32
%137 = load i32*, i32** @kernel, align 4, !tbaa !5
%138 = ptrtoint i32* %137 to i32
%139 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.17, i32 0, i32 0), i32 %134, i32 %136, i32 %138)
%140 = load i32*, i32** @prolog, align 4, !tbaa !5
%141 = ptrtoint i32* %140 to i32
%142 = load i32*, i32** @prologPtr, align 4, !tbaa !5
%143 = getelementptr inbounds i32, i32* %142, i32 %18
store i32 %141, i32* %143, align 4, !tbaa !16
%144 = load i32*, i32** @epilog, align 4, !tbaa !5
%145 = ptrtoint i32* %144 to i32
%146 = load i32*, i32** @epilogPtr, align 4, !tbaa !5
%147 = getelementptr inbounds i32, i32* %146, i32 %18
store i32 %145, i32* %147, align 4, !tbaa !16
%148 = load i32*, i32** @kernel, align 4, !tbaa !5
%149 = ptrtoint i32* %148 to i32
%150 = load i32*, i32** @kernelPtr, align 4, !tbaa !5
%151 = getelementptr inbounds i32, i32* %150, i32 %18
store i32 %149, i32* %151, align 4, !tbaa !16
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %123) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %119) #11
call void @llvm.lifetime.end.p0i8(i64 256, i8* nonnull %80) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %52) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %51) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %50) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %49) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %32) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %31) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %30) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %29) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %28) #11
call void @llvm.lifetime.end.p0i8(i64 20, i8* nonnull %25) #11
call void @llvm.lifetime.end.p0i8(i64 25, i8* nonnull %23) #11
ret i32 0
}
; Function Attrs: nofree nounwind
declare noundef i32 @puts(i8* nocapture noundef readonly) local_unnamed_addr #4
; Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #5
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #6
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i32, i1 immarg) #6
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @sprintf(i8* noalias nocapture noundef writeonly, i8* nocapture noundef readonly, ...) local_unnamed_addr #2
; Function Attrs: argmemonly nofree nounwind willreturn
declare dso_local i8* @strcat(i8* noalias returned writeonly, i8* noalias nocapture readonly) local_unnamed_addr #7
; Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly
declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1 immarg) #5
; Function Attrs: argmemonly nofree nounwind readonly willreturn
declare i32 @strlen(i8* nocapture) local_unnamed_addr #8
; Function Attrs: nofree nounwind
declare dso_local noalias noundef %struct._IO_FILE* @fopen(i8* nocapture noundef readonly, i8* nocapture noundef readonly) local_unnamed_addr #2
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @fread(i8* nocapture noundef, i32 noundef, i32 noundef, %struct._IO_FILE* nocapture noundef) local_unnamed_addr #2
; Function Attrs: inaccessiblememonly nofree nounwind willreturn
declare dso_local noalias noundef i8* @malloc(i32) local_unnamed_addr #9
declare dso_local i32 @__isoc99_fscanf(%struct._IO_FILE*, i8*, ...) local_unnamed_addr #10
; Function Attrs: nofree nounwind
declare dso_local noundef i8* @fgets(i8* noundef, i32 noundef, %struct._IO_FILE* nocapture noundef) local_unnamed_addr #2
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @fclose(%struct._IO_FILE* nocapture noundef) local_unnamed_addr #2
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #6
; Function Attrs: nofree nounwind
define dso_local i32 @configureCGRA(i32 %0) local_unnamed_addr #0 {
%2 = alloca [25 x i8], align 1
%3 = alloca [20 x i8], align 1
%4 = alloca [40 x i8], align 1
%5 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @str.34, i32 0, i32 0))
%6 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%7 = add i32 %0, -1
%8 = mul i32 %7, 7
%9 = getelementptr inbounds i32, i32* %6, i32 %8
%10 = getelementptr inbounds i32, i32* %9, i32 5
%11 = load i32, i32* %10, align 4, !tbaa !13
%12 = getelementptr inbounds [25 x i8], [25 x i8]* %2, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 25, i8* nonnull %12) #11
%13 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 20, i8* nonnull %13) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(20) %13, i8* nonnull align 1 dereferenceable(20) getelementptr inbounds ([20 x i8], [20 x i8]* @__const.configureCGRA.directoryPath, i32 0, i32 0), i32 20, i1 false)
%14 = call i32 (i8*, i8*, ...) @sprintf(i8* nonnull %12, i8* nonnull dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32 %0) #11
%15 = call i8* @strcat(i8* nonnull %13, i8* nonnull %12) #11
%16 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.19, i32 0, i32 0), i8* nonnull %12)
%17 = icmp slt i32 %11, 1
br i1 %17, label %18, label %25
18: ; preds = %1
%19 = load i32, i32* @dynamicTCVal, align 4, !tbaa !13
%20 = add nsw i32 %19, %11
%21 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.20, i32 0, i32 0), i32 %11, i32 %19)
%22 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%23 = getelementptr inbounds i32, i32* %22, i32 %8
%24 = getelementptr inbounds i32, i32* %23, i32 5
store i32 %20, i32* %24, align 4, !tbaa !13
br label %25
25: ; preds = %18, %1
%26 = getelementptr inbounds [40 x i8], [40 x i8]* %4, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %26) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %26, i8* nonnull align 1 dereferenceable(40) getelementptr inbounds ([40 x i8], [40 x i8]* @__const.configureCGRA.initCGRAfile, i32 0, i32 0), i32 40, i1 false)
%27 = call i32 @strlen(i8* nonnull %26)
%28 = getelementptr [40 x i8], [40 x i8]* %4, i32 0, i32 %27
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(14) %28, i8* nonnull align 1 dereferenceable(14) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i32 0, i32 0), i32 14, i1 false)
%29 = call %struct._IO_FILE* @fopen(i8* nonnull %26, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.22, i32 0, i32 0))
br label %30
30: ; preds = %30, %25
%31 = phi i32 [ 0, %25 ], [ %37, %30 ]
%32 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%33 = getelementptr inbounds i32, i32* %32, i32 %8
%34 = getelementptr inbounds i32, i32* %33, i32 %31
%35 = load i32, i32* %34, align 4, !tbaa !13
%36 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i32 0, i32 0), i32 %35)
%37 = add nuw nsw i32 %31, 1
%38 = icmp eq i32 %37, 7
br i1 %38, label %39, label %30, !llvm.loop !18
39: ; preds = %30
%40 = load i32*, i32** @epilogPtr, align 4, !tbaa !5
%41 = getelementptr inbounds i32, i32* %40, i32 %7
%42 = load i32, i32* %41, align 4, !tbaa !16
%43 = zext i32 %42 to i64
%44 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i32 0, i32 0), i64 %43)
%45 = load i32*, i32** @prologPtr, align 4, !tbaa !5
%46 = getelementptr inbounds i32, i32* %45, i32 %7
%47 = load i32, i32* %46, align 4, !tbaa !16
%48 = zext i32 %47 to i64
%49 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i32 0, i32 0), i64 %48)
%50 = load i32*, i32** @kernelPtr, align 4, !tbaa !5
%51 = getelementptr inbounds i32, i32* %50, i32 %7
%52 = load i32, i32* %51, align 4, !tbaa !16
%53 = zext i32 %52 to i64
%54 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i32 0, i32 0), i64 %53)
%55 = call i32 @fclose(%struct._IO_FILE* %29)
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %26) #11
call void @llvm.lifetime.end.p0i8(i64 20, i8* nonnull %13) #11
call void @llvm.lifetime.end.p0i8(i64 25, i8* nonnull %12) #11
ret i32 0
}
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @fprintf(%struct._IO_FILE* nocapture noundef, i8* nocapture noundef readonly, ...) local_unnamed_addr #2
; Function Attrs: nounwind
define dso_local void @checkTotalLoops() local_unnamed_addr #3 {
%1 = alloca [40 x i8], align 1
%2 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.35, i32 0, i32 0))
%3 = getelementptr inbounds [40 x i8], [40 x i8]* %1, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %3) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %3, i8* nonnull align 1 dereferenceable(40) getelementptr inbounds ([40 x i8], [40 x i8]* @__const.checkTotalLoops.myfile, i32 0, i32 0), i32 40, i1 false)
%4 = call %struct._IO_FILE* @fopen(i8* nonnull %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%5 = tail call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %4, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i32 0, i32 0), i32* nonnull @totalLoops) #11
%6 = tail call i32 @fclose(%struct._IO_FILE* %4)
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %3) #11
ret void
}
; Function Attrs: nounwind
define dso_local i8* @runOnCGRA() local_unnamed_addr #3 {
%1 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.36, i32 0, i32 0))
tail call void asm sideeffect "mov r11,$0", "r"(i32 15) #11, !srcloc !19
ret i8* null
}
; Function Attrs: nounwind
define dso_local void @accelerateOnCGRA(i32 %0) local_unnamed_addr #3 {
%2 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str.37, i32 0, i32 0))
%3 = tail call i32 @configureCGRA(i32 %0)
%4 = tail call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.30, i32 0, i32 0), i32 %0)
%5 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.36, i32 0, i32 0)) #11
tail call void asm sideeffect "mov r11,$0", "r"(i32 15) #11, !srcloc !19
ret void
}
; Function Attrs: nofree nounwind
define dso_local void @deleteCGRA() local_unnamed_addr #0 {
%1 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @str.38, i32 0, i32 0))
ret void
}
; Function Attrs: nounwind
define dso_local void @createCGRA() local_unnamed_addr #3 {
%1 = alloca [40 x i8], align 1
%2 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.39, i32 0, i32 0))
%3 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.35, i32 0, i32 0)) #11
%4 = getelementptr inbounds [40 x i8], [40 x i8]* %1, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %4) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %4, i8* nonnull align 1 dereferenceable(40) getelementptr inbounds ([40 x i8], [40 x i8]* @__const.checkTotalLoops.myfile, i32 0, i32 0), i32 40, i1 false) #11
%5 = call %struct._IO_FILE* @fopen(i8* nonnull %4, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0)) #11
%6 = tail call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %5, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i32 0, i32 0), i32* nonnull @totalLoops) #11
%7 = tail call i32 @fclose(%struct._IO_FILE* %5) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %4) #11
%8 = load i32, i32* @totalLoops, align 4, !tbaa !13
%9 = mul i32 %8, 28
%10 = tail call noalias i8* @malloc(i32 %9) #11
store i8* %10, i8** bitcast (i32** @initCGRA to i8**), align 4, !tbaa !5
%11 = shl i32 %8, 2
%12 = tail call noalias i8* @malloc(i32 %11) #11
store i8* %12, i8** bitcast (i32** @prologPtr to i8**), align 4, !tbaa !5
%13 = tail call noalias i8* @malloc(i32 %11) #11
store i8* %13, i8** bitcast (i32** @kernelPtr to i8**), align 4, !tbaa !5
%14 = tail call noalias i8* @malloc(i32 %11) #11
store i8* %14, i8** bitcast (i32** @epilogPtr to i8**), align 4, !tbaa !5
%15 = icmp eq i32 %8, 0
br i1 %15, label %.loopexit, label %.preheader.preheader
.preheader.preheader: ; preds = %0
br label %.preheader
.preheader: ; preds = %.preheader, %.preheader.preheader
%16 = phi i32 [ %18, %.preheader ], [ 1, %.preheader.preheader ]
%17 = tail call i32 @initializeParameters(i32 %16)
%18 = add i32 %16, 1
%19 = load i32, i32* @totalLoops, align 4, !tbaa !13
%20 = icmp ugt i32 %18, %19
br i1 %20, label %.loopexit.loopexit, label %.preheader, !llvm.loop !20
.loopexit.loopexit: ; preds = %.preheader
br label %.loopexit
.loopexit: ; preds = %.loopexit.loopexit, %0
%21 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.40, i32 0, i32 0))
ret void
}
attributes #0 = { nofree nounwind "disable-tail-calls"="false" "frame-pointer"="none" "min-legal-vector-width"="0" "no-jump-tables"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #1 = { nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #2 = { nofree nounwind "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #3 = { nounwind "disable-tail-calls"="false" "frame-pointer"="none" "min-legal-vector-width"="0" "no-jump-tables"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #4 = { nofree nounwind }
attributes #5 = { argmemonly nofree nosync nounwind willreturn writeonly }
attributes #6 = { argmemonly nofree nosync nounwind willreturn }
attributes #7 = { argmemonly nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #8 = { argmemonly nofree nounwind readonly willreturn }
attributes #9 = { inaccessiblememonly nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #10 = { "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #11 = { nounwind }
!llvm.ident = !{!0, !0}
!llvm.module.flags = !{!1, !2, !3, !4}
!0 = !{!"clang version 13.0.0 (https://github.com/MPSLab-ASU/CCF-20.04/ 05285de7579f417a4d73ad832b8f4cc497f25235)"}
!1 = !{i32 7, !"Dwarf Version", i32 4}
!2 = !{i32 2, !"Debug Info Version", i32 3}
!3 = !{i32 1, !"wchar_size", i32 4}
!4 = !{i32 1, !"min_enum_size", i32 4}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.CGRA.enable"}
!12 = !{!"llvm.loop.unroll.disable"}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = distinct !{!15, !10, !12}
!16 = !{!17, !17, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = distinct !{!18, !10, !12}
!19 = !{i32 5341}
!20 = distinct !{!20, !10, !12}

View File

@ -1,573 +0,0 @@
; ModuleID = 'InvokeCGRA.bc'
source_filename = "llvm-link"
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "armv7-none-linux-eabi"
%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, %struct._IO_codecvt*, %struct._IO_wide_data*, %struct._IO_FILE*, i8*, i32, i32, [40 x i8] }
%struct._IO_marker = type opaque
%struct._IO_codecvt = type opaque
%struct._IO_wide_data = type opaque
@.str = private unnamed_addr constant [24 x i8] c"***** %d^%d = %d *****\0A\00", align 1
@totalLoops = dso_local global i32 0, align 4
@dynamicTCVal = dso_local local_unnamed_addr global i32 0, align 4
@initCGRA = dso_local local_unnamed_addr global i32* null, align 4
@epilog = dso_local local_unnamed_addr global i32* null, align 4
@prolog = dso_local local_unnamed_addr global i32* null, align 4
@kernel = dso_local local_unnamed_addr global i32* null, align 4
@prologPtr = dso_local local_unnamed_addr global i32* null, align 4
@epilogPtr = dso_local local_unnamed_addr global i32* null, align 4
@kernelPtr = dso_local local_unnamed_addr global i32* null, align 4
@ArrPtr = dso_local local_unnamed_addr global i32* null, align 4
@pth = dso_local local_unnamed_addr global i32 0, align 4
@str = private unnamed_addr constant [34 x i8] c"from cgra.c Initialize Parameters\00", align 1
@__const.configureCGRA.directoryPath = private unnamed_addr constant [20 x i8] c"./CGRAExec/L\00\00\00\00\00\00\00\00", align 1
@.str.1 = private unnamed_addr constant [3 x i8] c"%d\00", align 1
@.str.2 = private unnamed_addr constant [16 x i8] c"/epilog_ins.bin\00", align 1
@.str.3 = private unnamed_addr constant [16 x i8] c"/prolog_ins.bin\00", align 1
@.str.4 = private unnamed_addr constant [16 x i8] c"/kernel_ins.bin\00", align 1
@.str.5 = private unnamed_addr constant [17 x i8] c"/CGRA_config.txt\00", align 1
@.str.6 = private unnamed_addr constant [3 x i8] c"rb\00", align 1
@.str.7 = private unnamed_addr constant [2 x i8] c"r\00", align 1
@.str.8 = private unnamed_addr constant [32 x i8] c"\0A**********EPISIZE %d*********\0A\00", align 1
@.str.9 = private unnamed_addr constant [32 x i8] c"\0A**********PROSIZE %d*********\0A\00", align 1
@.str.10 = private unnamed_addr constant [33 x i8] c"\0A**********KERNSIZE %d*********\0A\00", align 1
@.str.11 = private unnamed_addr constant [37 x i8] c"\0A******SIZE OF UNSIGNED LONG%d*****\0A\00", align 1
@.str.12 = private unnamed_addr constant [42 x i8] c"\0A******SIZE OF UNSIGNED LONG LONG%d*****\0A\00", align 1
@.str.13 = private unnamed_addr constant [26 x i8] c"/livevar_st_ins_count.txt\00", align 1
@.str.14 = private unnamed_addr constant [39 x i8] c"\0A************XDIM and YDim are %d, %d\0A\00", align 1
@.str.15 = private unnamed_addr constant [18 x i8] c"/kernel_count.txt\00", align 1
@.str.16 = private unnamed_addr constant [16 x i8] c"Loop Count: %d\0A\00", align 1
@.str.17 = private unnamed_addr constant [55 x i8] c"From FILE: PROLOGPC= %lx, EPILOGPC=%lx, KernelPC=%lx\0A\00", align 1
@str.34 = private unnamed_addr constant [14 x i8] c"configureCGRA\00", align 1
@.str.19 = private unnamed_addr constant [14 x i8] c"\0Aloopno = %s\0A\00", align 1
@.str.20 = private unnamed_addr constant [17 x i8] c"newTC = %d + %d\0A\00", align 1
@__const.configureCGRA.initCGRAfile = private unnamed_addr constant [40 x i8] c"./CGRAExec/L1\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1
@.str.21 = private unnamed_addr constant [14 x i8] c"/initCGRA.txt\00", align 1
@.str.22 = private unnamed_addr constant [3 x i8] c"wb\00", align 1
@.str.23 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1
@.str.24 = private unnamed_addr constant [5 x i8] c"%ld\0A\00", align 1
@str.35 = private unnamed_addr constant [16 x i8] c"checkTotalLoops\00", align 1
@__const.checkTotalLoops.myfile = private unnamed_addr constant [40 x i8] c"./CGRAExec/total_loops.txt\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1
@.str.26 = private unnamed_addr constant [3 x i8] c"%u\00", align 1
@str.36 = private unnamed_addr constant [12 x i8] c"\0A\0ArunOnCGRA\00", align 1
@str.37 = private unnamed_addr constant [19 x i8] c"\0A\0AaccelerateOnCGRA\00", align 1
@.str.30 = private unnamed_addr constant [35 x i8] c"Core will execute loop %u on CGRA\0A\00", align 1
@str.38 = private unnamed_addr constant [15 x i8] c"\0Adeleting cgra\00", align 1
@str.39 = private unnamed_addr constant [11 x i8] c"createCGRA\00", align 1
@str.40 = private unnamed_addr constant [35 x i8] c"Main thread calling CGRA thread...\00", align 1
@gVar1 = common local_unnamed_addr global i32 0
@gVar2 = common local_unnamed_addr global i32 0
; Function Attrs: nofree nounwind
define dso_local i32 @main(i32 %0, i8** nocapture readonly %1) local_unnamed_addr #0 {
%3 = getelementptr inbounds i8*, i8** %1, i32 1
%4 = load i8*, i8** %3, align 4, !tbaa !5
%5 = tail call i32 @strtol(i8* nocapture nonnull %4, i8** null, i32 10) #11
%6 = icmp sgt i32 %5, 1
store i32 %5, i32* @gVar1, align 4
br i1 %6, label %.preheader.preheader, label %.loopexit
.preheader.preheader: ; preds = %2
%7 = sub i32 %5, 1
%8 = sdiv i32 %7, 1
store i32 %8, i32* @dynamicTCVal, align 4
br label %9
9: ; preds = %.preheader.preheader
call void @accelerateOnCGRA(i32 1)
br label %.loopexit.loopexit
.loopexit.loopexit: ; preds = %9
br label %10
10: ; preds = %.loopexit.loopexit
%11 = load i32, i32* @gVar2, align 4
br label %.loopexit
.loopexit: ; preds = %10, %2
%12 = phi i32 [ 1, %2 ], [ %11, %10 ]
%13 = tail call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i32 0, i32 0), i32 2, i32 %5, i32 %12)
ret i32 0
}
; Function Attrs: nofree nounwind willreturn
declare dso_local i32 @strtol(i8* readonly, i8** nocapture, i32) local_unnamed_addr #1
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @printf(i8* nocapture noundef readonly, ...) local_unnamed_addr #2
; Function Attrs: nounwind
define dso_local i32 @initializeParameters(i32 %0) local_unnamed_addr #3 {
%2 = alloca [25 x i8], align 1
%3 = alloca [20 x i8], align 1
%4 = alloca [40 x i8], align 1
%5 = alloca [40 x i8], align 1
%6 = alloca [40 x i8], align 1
%7 = alloca [40 x i8], align 1
%8 = alloca [40 x i8], align 1
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca i32, align 4
%12 = alloca i32, align 4
%13 = alloca [256 x i8], align 1
%14 = alloca [40 x i8], align 1
%15 = alloca i32, align 4
%16 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str, i32 0, i32 0))
%17 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%18 = add i32 %0, -1
%19 = mul i32 %18, 7
%20 = getelementptr inbounds i32, i32* %17, i32 %19
store i32 2011168768, i32* %20, align 4, !tbaa !9
%21 = getelementptr inbounds i32, i32* %20, i32 1
store i32 2011168768, i32* %21, align 4, !tbaa !9
%22 = getelementptr inbounds i32, i32* %20, i32 2
%23 = getelementptr inbounds [25 x i8], [25 x i8]* %2, i32 0, i32 0
%24 = bitcast i32* %22 to i8*
tail call void @llvm.memset.p0i8.i64(i8* nonnull align 4 dereferenceable(20) %24, i8 0, i64 20, i1 false)
call void @llvm.lifetime.start.p0i8(i64 25, i8* nonnull %23) #11
%25 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 20, i8* nonnull %25) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(20) %25, i8* nonnull align 1 dereferenceable(20) getelementptr inbounds ([20 x i8], [20 x i8]* @__const.configureCGRA.directoryPath, i32 0, i32 0), i32 20, i1 false)
%26 = call i32 (i8*, i8*, ...) @sprintf(i8* nonnull %23, i8* nonnull dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32 %0) #11
%27 = call i8* @strcat(i8* nonnull %25, i8* nonnull %23) #11
%28 = getelementptr inbounds [40 x i8], [40 x i8]* %4, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %28) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %28, i8 0, i32 40, i1 false)
%29 = getelementptr inbounds [40 x i8], [40 x i8]* %5, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %29) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %29, i8 0, i32 40, i1 false)
%30 = getelementptr inbounds [40 x i8], [40 x i8]* %6, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %30) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %30, i8 0, i32 40, i1 false)
%31 = getelementptr inbounds [40 x i8], [40 x i8]* %7, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %31) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %31, i8 0, i32 40, i1 false)
%32 = getelementptr inbounds [40 x i8], [40 x i8]* %8, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %32) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %32, i8 0, i32 40, i1 false)
%33 = call i8* @strcat(i8* nonnull %28, i8* nonnull %25) #11
%34 = call i32 @strlen(i8* nonnull %28)
%35 = getelementptr [40 x i8], [40 x i8]* %4, i32 0, i32 %34
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(16) %35, i8* nonnull align 1 dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.2, i32 0, i32 0), i32 16, i1 false)
%36 = call i8* @strcat(i8* nonnull %29, i8* nonnull %25) #11
%37 = call i32 @strlen(i8* nonnull %29)
%38 = getelementptr [40 x i8], [40 x i8]* %5, i32 0, i32 %37
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(16) %38, i8* nonnull align 1 dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.3, i32 0, i32 0), i32 16, i1 false)
%39 = call i8* @strcat(i8* nonnull %30, i8* nonnull %25) #11
%40 = call i32 @strlen(i8* nonnull %30)
%41 = getelementptr [40 x i8], [40 x i8]* %6, i32 0, i32 %40
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(16) %41, i8* nonnull align 1 dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i32 0, i32 0), i32 16, i1 false)
%42 = call i8* @strcat(i8* nonnull %32, i8* nonnull %25) #11
%43 = call i32 @strlen(i8* nonnull %32)
%44 = getelementptr [40 x i8], [40 x i8]* %8, i32 0, i32 %43
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(17) %44, i8* nonnull align 1 dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.5, i32 0, i32 0), i32 17, i1 false)
%45 = call %struct._IO_FILE* @fopen(i8* nonnull %28, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i32 0, i32 0))
%46 = call %struct._IO_FILE* @fopen(i8* nonnull %29, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i32 0, i32 0))
%47 = call %struct._IO_FILE* @fopen(i8* nonnull %30, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i32 0, i32 0))
%48 = call %struct._IO_FILE* @fopen(i8* nonnull %32, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%49 = bitcast i32* %9 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %49) #11
%50 = bitcast i32* %10 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %50) #11
%51 = bitcast i32* %11 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %51) #11
%52 = bitcast i32* %12 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %52) #11
%53 = call i32 @fread(i8* nonnull %49, i32 4, i32 1, %struct._IO_FILE* %45)
%54 = call i32 @fread(i8* nonnull %50, i32 4, i32 1, %struct._IO_FILE* %46)
%55 = call i32 @fread(i8* nonnull %51, i32 4, i32 1, %struct._IO_FILE* %47)
%56 = load i32, i32* %9, align 4, !tbaa !9
%57 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.8, i32 0, i32 0), i32 %56)
%58 = load i32, i32* %10, align 4, !tbaa !9
%59 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.9, i32 0, i32 0), i32 %58)
%60 = load i32, i32* %11, align 4, !tbaa !9
%61 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.10, i32 0, i32 0), i32 %60)
%62 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.11, i32 0, i32 0), i32 4)
%63 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.12, i32 0, i32 0), i32 8)
%64 = shl i32 %56, 3
%65 = call noalias i8* @malloc(i32 %64) #11
store i8* %65, i8** bitcast (i32** @epilog to i8**), align 4, !tbaa !5
%66 = shl i32 %58, 3
%67 = call noalias i8* @malloc(i32 %66) #11
store i8* %67, i8** bitcast (i32** @prolog to i8**), align 4, !tbaa !5
%68 = shl i32 %60, 3
%69 = call noalias i8* @malloc(i32 %68) #11
store i8* %69, i8** bitcast (i32** @kernel to i8**), align 4, !tbaa !5
%70 = call i32 @fread(i8* %65, i32 8, i32 %56, %struct._IO_FILE* %45)
%71 = load i8*, i8** bitcast (i32** @prolog to i8**), align 4, !tbaa !5
%72 = call i32 @fread(i8* %71, i32 8, i32 %58, %struct._IO_FILE* %46)
%73 = load i8*, i8** bitcast (i32** @kernel to i8**), align 4, !tbaa !5
%74 = call i32 @fread(i8* %73, i32 8, i32 %60, %struct._IO_FILE* %47)
%75 = call i8* @strcat(i8* nonnull %31, i8* nonnull %25) #11
%76 = call i32 @strlen(i8* nonnull %31)
%77 = getelementptr [40 x i8], [40 x i8]* %7, i32 0, i32 %76
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(26) %77, i8* nonnull align 1 dereferenceable(26) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.13, i32 0, i32 0), i32 26, i1 false)
%78 = call %struct._IO_FILE* @fopen(i8* nonnull %31, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%79 = call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %78, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32* nonnull %12) #11
%80 = getelementptr inbounds [256 x i8], [256 x i8]* %13, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 256, i8* nonnull %80) #11
%81 = call i8* @fgets(i8* nonnull %80, i32 256, %struct._IO_FILE* %48)
%82 = icmp eq i8* %81, null
br i1 %82, label %.loopexit, label %.preheader.preheader
.preheader.preheader: ; preds = %1
br label %.preheader
.preheader: ; preds = %94, %.preheader.preheader
%83 = phi i32 [ %96, %94 ], [ 0, %.preheader.preheader ]
%84 = phi i32 [ %95, %94 ], [ 0, %.preheader.preheader ]
%85 = phi i32 [ %86, %94 ], [ 0, %.preheader.preheader ]
%86 = add nuw nsw i32 %85, 1
%87 = icmp eq i32 %85, 0
br i1 %87, label %88, label %90
88: ; preds = %.preheader
%89 = call i32 @strtol(i8* nocapture nonnull %80, i8** null, i32 10) #11
br label %94
90: ; preds = %.preheader
%91 = icmp eq i32 %86, 2
br i1 %91, label %92, label %.loopexit.loopexit
92: ; preds = %90
%93 = call i32 @strtol(i8* nocapture nonnull %80, i8** null, i32 10) #11
br label %94
94: ; preds = %92, %88
%95 = phi i32 [ %84, %88 ], [ %93, %92 ]
%96 = phi i32 [ %89, %88 ], [ %83, %92 ]
%97 = call i8* @fgets(i8* nonnull %80, i32 256, %struct._IO_FILE* %48)
%98 = icmp eq i8* %97, null
br i1 %98, label %.loopexit.loopexit, label %.preheader, !llvm.loop !11
.loopexit.loopexit: ; preds = %94, %90
%.ph = phi i32 [ %95, %94 ], [ %84, %90 ]
%.ph6 = phi i32 [ %96, %94 ], [ %83, %90 ]
br label %.loopexit
.loopexit: ; preds = %.loopexit.loopexit, %1
%99 = phi i32 [ 0, %1 ], [ %.ph, %.loopexit.loopexit ]
%100 = phi i32 [ 0, %1 ], [ %.ph6, %.loopexit.loopexit ]
%101 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.14, i32 0, i32 0), i32 %100, i32 %99)
%102 = mul nsw i32 %100, %99
%103 = sdiv i32 %60, %102
%104 = sdiv i32 %56, %102
%105 = sdiv i32 %58, %102
%106 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%107 = getelementptr inbounds i32, i32* %106, i32 %19
%108 = getelementptr inbounds i32, i32* %107, i32 2
store i32 %103, i32* %108, align 4, !tbaa !9
%109 = getelementptr inbounds i32, i32* %107, i32 3
store i32 %104, i32* %109, align 4, !tbaa !9
%110 = getelementptr inbounds i32, i32* %107, i32 4
store i32 %105, i32* %110, align 4, !tbaa !9
%111 = load i32, i32* %12, align 4, !tbaa !9
%112 = sdiv i32 %111, %102
%113 = getelementptr inbounds i32, i32* %107, i32 6
store i32 %112, i32* %113, align 4, !tbaa !9
%114 = call i32 @fclose(%struct._IO_FILE* %45)
%115 = call i32 @fclose(%struct._IO_FILE* %46)
%116 = call i32 @fclose(%struct._IO_FILE* %47)
%117 = call i32 @fclose(%struct._IO_FILE* %78)
%118 = call i32 @fclose(%struct._IO_FILE* %48)
%119 = getelementptr inbounds [40 x i8], [40 x i8]* %14, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %119) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %119, i8 0, i32 40, i1 false)
%120 = call i8* @strcat(i8* nonnull %119, i8* nonnull %25) #11
%121 = call i32 @strlen(i8* nonnull %119)
%122 = getelementptr [40 x i8], [40 x i8]* %14, i32 0, i32 %121
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(18) %122, i8* nonnull align 1 dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.15, i32 0, i32 0), i32 18, i1 false)
%123 = bitcast i32* %15 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %123) #11
store i32 0, i32* %15, align 4, !tbaa !9
%124 = call %struct._IO_FILE* @fopen(i8* nonnull %119, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%125 = call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %124, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32* nonnull %15) #11
%126 = call i32 @fclose(%struct._IO_FILE* %124)
%127 = load i32, i32* %15, align 4, !tbaa !9
%128 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i32 0, i32 0), i32 %127)
%129 = load i32, i32* %15, align 4, !tbaa !9
%130 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%131 = getelementptr inbounds i32, i32* %130, i32 %19
%132 = getelementptr inbounds i32, i32* %131, i32 5
store i32 %129, i32* %132, align 4, !tbaa !9
%133 = load i32*, i32** @prolog, align 4, !tbaa !5
%134 = ptrtoint i32* %133 to i32
%135 = load i32*, i32** @epilog, align 4, !tbaa !5
%136 = ptrtoint i32* %135 to i32
%137 = load i32*, i32** @kernel, align 4, !tbaa !5
%138 = ptrtoint i32* %137 to i32
%139 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.17, i32 0, i32 0), i32 %134, i32 %136, i32 %138)
%140 = load i32*, i32** @prolog, align 4, !tbaa !5
%141 = ptrtoint i32* %140 to i32
%142 = load i32*, i32** @prologPtr, align 4, !tbaa !5
%143 = getelementptr inbounds i32, i32* %142, i32 %18
store i32 %141, i32* %143, align 4, !tbaa !14
%144 = load i32*, i32** @epilog, align 4, !tbaa !5
%145 = ptrtoint i32* %144 to i32
%146 = load i32*, i32** @epilogPtr, align 4, !tbaa !5
%147 = getelementptr inbounds i32, i32* %146, i32 %18
store i32 %145, i32* %147, align 4, !tbaa !14
%148 = load i32*, i32** @kernel, align 4, !tbaa !5
%149 = ptrtoint i32* %148 to i32
%150 = load i32*, i32** @kernelPtr, align 4, !tbaa !5
%151 = getelementptr inbounds i32, i32* %150, i32 %18
store i32 %149, i32* %151, align 4, !tbaa !14
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %123) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %119) #11
call void @llvm.lifetime.end.p0i8(i64 256, i8* nonnull %80) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %52) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %51) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %50) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %49) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %32) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %31) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %30) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %29) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %28) #11
call void @llvm.lifetime.end.p0i8(i64 20, i8* nonnull %25) #11
call void @llvm.lifetime.end.p0i8(i64 25, i8* nonnull %23) #11
ret i32 0
}
; Function Attrs: nofree nounwind
declare noundef i32 @puts(i8* nocapture noundef readonly) local_unnamed_addr #4
; Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #5
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #6
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i32, i1 immarg) #6
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @sprintf(i8* noalias nocapture noundef writeonly, i8* nocapture noundef readonly, ...) local_unnamed_addr #2
; Function Attrs: argmemonly nofree nounwind willreturn
declare dso_local i8* @strcat(i8* noalias returned writeonly, i8* noalias nocapture readonly) local_unnamed_addr #7
; Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly
declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1 immarg) #5
; Function Attrs: argmemonly nofree nounwind readonly willreturn
declare i32 @strlen(i8* nocapture) local_unnamed_addr #8
; Function Attrs: nofree nounwind
declare dso_local noalias noundef %struct._IO_FILE* @fopen(i8* nocapture noundef readonly, i8* nocapture noundef readonly) local_unnamed_addr #2
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @fread(i8* nocapture noundef, i32 noundef, i32 noundef, %struct._IO_FILE* nocapture noundef) local_unnamed_addr #2
; Function Attrs: inaccessiblememonly nofree nounwind willreturn
declare dso_local noalias noundef i8* @malloc(i32) local_unnamed_addr #9
declare dso_local i32 @__isoc99_fscanf(%struct._IO_FILE*, i8*, ...) local_unnamed_addr #10
; Function Attrs: nofree nounwind
declare dso_local noundef i8* @fgets(i8* noundef, i32 noundef, %struct._IO_FILE* nocapture noundef) local_unnamed_addr #2
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @fclose(%struct._IO_FILE* nocapture noundef) local_unnamed_addr #2
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #6
; Function Attrs: nofree nounwind
define dso_local i32 @configureCGRA(i32 %0) local_unnamed_addr #0 {
%2 = alloca [25 x i8], align 1
%3 = alloca [20 x i8], align 1
%4 = alloca [40 x i8], align 1
%5 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @str.34, i32 0, i32 0))
%6 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%7 = add i32 %0, -1
%8 = mul i32 %7, 7
%9 = getelementptr inbounds i32, i32* %6, i32 %8
%10 = getelementptr inbounds i32, i32* %9, i32 5
%11 = load i32, i32* %10, align 4, !tbaa !9
%12 = getelementptr inbounds [25 x i8], [25 x i8]* %2, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 25, i8* nonnull %12) #11
%13 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 20, i8* nonnull %13) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(20) %13, i8* nonnull align 1 dereferenceable(20) getelementptr inbounds ([20 x i8], [20 x i8]* @__const.configureCGRA.directoryPath, i32 0, i32 0), i32 20, i1 false)
%14 = call i32 (i8*, i8*, ...) @sprintf(i8* nonnull %12, i8* nonnull dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32 %0) #11
%15 = call i8* @strcat(i8* nonnull %13, i8* nonnull %12) #11
%16 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.19, i32 0, i32 0), i8* nonnull %12)
%17 = icmp slt i32 %11, 1
br i1 %17, label %18, label %25
18: ; preds = %1
%19 = load i32, i32* @dynamicTCVal, align 4, !tbaa !9
%20 = add nsw i32 %19, %11
%21 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.20, i32 0, i32 0), i32 %11, i32 %19)
%22 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%23 = getelementptr inbounds i32, i32* %22, i32 %8
%24 = getelementptr inbounds i32, i32* %23, i32 5
store i32 %20, i32* %24, align 4, !tbaa !9
br label %25
25: ; preds = %18, %1
%26 = getelementptr inbounds [40 x i8], [40 x i8]* %4, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %26) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %26, i8* nonnull align 1 dereferenceable(40) getelementptr inbounds ([40 x i8], [40 x i8]* @__const.configureCGRA.initCGRAfile, i32 0, i32 0), i32 40, i1 false)
%27 = call i32 @strlen(i8* nonnull %26)
%28 = getelementptr [40 x i8], [40 x i8]* %4, i32 0, i32 %27
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(14) %28, i8* nonnull align 1 dereferenceable(14) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i32 0, i32 0), i32 14, i1 false)
%29 = call %struct._IO_FILE* @fopen(i8* nonnull %26, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.22, i32 0, i32 0))
br label %30
30: ; preds = %30, %25
%31 = phi i32 [ 0, %25 ], [ %37, %30 ]
%32 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%33 = getelementptr inbounds i32, i32* %32, i32 %8
%34 = getelementptr inbounds i32, i32* %33, i32 %31
%35 = load i32, i32* %34, align 4, !tbaa !9
%36 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i32 0, i32 0), i32 %35)
%37 = add nuw nsw i32 %31, 1
%38 = icmp eq i32 %37, 7
br i1 %38, label %39, label %30, !llvm.loop !16
39: ; preds = %30
%40 = load i32*, i32** @epilogPtr, align 4, !tbaa !5
%41 = getelementptr inbounds i32, i32* %40, i32 %7
%42 = load i32, i32* %41, align 4, !tbaa !14
%43 = zext i32 %42 to i64
%44 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i32 0, i32 0), i64 %43)
%45 = load i32*, i32** @prologPtr, align 4, !tbaa !5
%46 = getelementptr inbounds i32, i32* %45, i32 %7
%47 = load i32, i32* %46, align 4, !tbaa !14
%48 = zext i32 %47 to i64
%49 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i32 0, i32 0), i64 %48)
%50 = load i32*, i32** @kernelPtr, align 4, !tbaa !5
%51 = getelementptr inbounds i32, i32* %50, i32 %7
%52 = load i32, i32* %51, align 4, !tbaa !14
%53 = zext i32 %52 to i64
%54 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i32 0, i32 0), i64 %53)
%55 = call i32 @fclose(%struct._IO_FILE* %29)
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %26) #11
call void @llvm.lifetime.end.p0i8(i64 20, i8* nonnull %13) #11
call void @llvm.lifetime.end.p0i8(i64 25, i8* nonnull %12) #11
ret i32 0
}
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @fprintf(%struct._IO_FILE* nocapture noundef, i8* nocapture noundef readonly, ...) local_unnamed_addr #2
; Function Attrs: nounwind
define dso_local void @checkTotalLoops() local_unnamed_addr #3 {
%1 = alloca [40 x i8], align 1
%2 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.35, i32 0, i32 0))
%3 = getelementptr inbounds [40 x i8], [40 x i8]* %1, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %3) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %3, i8* nonnull align 1 dereferenceable(40) getelementptr inbounds ([40 x i8], [40 x i8]* @__const.checkTotalLoops.myfile, i32 0, i32 0), i32 40, i1 false)
%4 = call %struct._IO_FILE* @fopen(i8* nonnull %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%5 = tail call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %4, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i32 0, i32 0), i32* nonnull @totalLoops) #11
%6 = tail call i32 @fclose(%struct._IO_FILE* %4)
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %3) #11
ret void
}
; Function Attrs: nounwind
define dso_local i8* @runOnCGRA() local_unnamed_addr #3 {
%1 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.36, i32 0, i32 0))
tail call void asm sideeffect "mov r11,$0", "r"(i32 15) #11, !srcloc !17
ret i8* null
}
; Function Attrs: nounwind
define dso_local void @accelerateOnCGRA(i32 %0) local_unnamed_addr #3 {
%2 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str.37, i32 0, i32 0))
%3 = tail call i32 @configureCGRA(i32 %0)
%4 = tail call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.30, i32 0, i32 0), i32 %0)
%5 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.36, i32 0, i32 0)) #11
tail call void asm sideeffect "mov r11,$0", "r"(i32 15) #11, !srcloc !17
ret void
}
; Function Attrs: nofree nounwind
define dso_local void @deleteCGRA() local_unnamed_addr #0 {
%1 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @str.38, i32 0, i32 0))
ret void
}
; Function Attrs: nounwind
define dso_local void @createCGRA() local_unnamed_addr #3 {
%1 = alloca [40 x i8], align 1
%2 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.39, i32 0, i32 0))
%3 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.35, i32 0, i32 0)) #11
%4 = getelementptr inbounds [40 x i8], [40 x i8]* %1, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %4) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %4, i8* nonnull align 1 dereferenceable(40) getelementptr inbounds ([40 x i8], [40 x i8]* @__const.checkTotalLoops.myfile, i32 0, i32 0), i32 40, i1 false) #11
%5 = call %struct._IO_FILE* @fopen(i8* nonnull %4, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0)) #11
%6 = tail call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %5, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i32 0, i32 0), i32* nonnull @totalLoops) #11
%7 = tail call i32 @fclose(%struct._IO_FILE* %5) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %4) #11
%8 = load i32, i32* @totalLoops, align 4, !tbaa !9
%9 = mul i32 %8, 28
%10 = tail call noalias i8* @malloc(i32 %9) #11
store i8* %10, i8** bitcast (i32** @initCGRA to i8**), align 4, !tbaa !5
%11 = shl i32 %8, 2
%12 = tail call noalias i8* @malloc(i32 %11) #11
store i8* %12, i8** bitcast (i32** @prologPtr to i8**), align 4, !tbaa !5
%13 = tail call noalias i8* @malloc(i32 %11) #11
store i8* %13, i8** bitcast (i32** @kernelPtr to i8**), align 4, !tbaa !5
%14 = tail call noalias i8* @malloc(i32 %11) #11
store i8* %14, i8** bitcast (i32** @epilogPtr to i8**), align 4, !tbaa !5
%15 = icmp eq i32 %8, 0
br i1 %15, label %.loopexit, label %.preheader.preheader
.preheader.preheader: ; preds = %0
br label %.preheader
.preheader: ; preds = %.preheader, %.preheader.preheader
%16 = phi i32 [ %18, %.preheader ], [ 1, %.preheader.preheader ]
%17 = tail call i32 @initializeParameters(i32 %16)
%18 = add i32 %16, 1
%19 = load i32, i32* @totalLoops, align 4, !tbaa !9
%20 = icmp ugt i32 %18, %19
br i1 %20, label %.loopexit.loopexit, label %.preheader, !llvm.loop !18
.loopexit.loopexit: ; preds = %.preheader
br label %.loopexit
.loopexit: ; preds = %.loopexit.loopexit, %0
%21 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.40, i32 0, i32 0))
ret void
}
attributes #0 = { nofree nounwind "disable-tail-calls"="false" "frame-pointer"="none" "min-legal-vector-width"="0" "no-jump-tables"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #1 = { nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #2 = { nofree nounwind "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #3 = { nounwind "disable-tail-calls"="false" "frame-pointer"="none" "min-legal-vector-width"="0" "no-jump-tables"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #4 = { nofree nounwind }
attributes #5 = { argmemonly nofree nosync nounwind willreturn writeonly }
attributes #6 = { argmemonly nofree nosync nounwind willreturn }
attributes #7 = { argmemonly nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #8 = { argmemonly nofree nounwind readonly willreturn }
attributes #9 = { inaccessiblememonly nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #10 = { "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #11 = { nounwind }
!llvm.ident = !{!0, !0}
!llvm.module.flags = !{!1, !2, !3, !4}
!0 = !{!"clang version 13.0.0 (https://github.com/MPSLab-ASU/CCF-20.04/ 05285de7579f417a4d73ad832b8f4cc497f25235)"}
!1 = !{i32 7, !"Dwarf Version", i32 4}
!2 = !{i32 2, !"Debug Info Version", i32 3}
!3 = !{i32 1, !"wchar_size", i32 4}
!4 = !{i32 1, !"min_enum_size", i32 4}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12, !13}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.unroll.disable"}
!14 = !{!15, !15, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = distinct !{!16, !12, !13}
!17 = !{i32 5341}
!18 = distinct !{!18, !12, !13}

View File

@ -1,11 +1,13 @@
FILE1 = pow.c FILE1 = pow.c
all: pow all: pow pow_arm
CC = cgracc CC = cgracc
ARMCC = arm-linux-gnueabi-gcc ARMCC = arm-linux-gnueabi-gcc
LIB = -lm LIB = -lm
pow: ${FILE1} Makefile pow: ${FILE1} Makefile
$(CC) -static -O3 ${FILE1} -o pow $(CC) -static -O3 ${FILE1} -o pow
pow_arm: ${FILE1} Makefile
$(ARMCC) -static -O3 ${FILE1} -o pow_cpu
clean: clean:
rm -rf pow CGRAExec m5out *.bc *.ll rm -rf pow CGRAExec m5out *.bc *.ll out pow_cpu CPU

View File

@ -1,569 +0,0 @@
; ModuleID = 'temp.bc'
source_filename = "llvm-link"
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "armv7-none-linux-eabi"
%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, %struct._IO_codecvt*, %struct._IO_wide_data*, %struct._IO_FILE*, i8*, i32, i32, [40 x i8] }
%struct._IO_marker = type opaque
%struct._IO_codecvt = type opaque
%struct._IO_wide_data = type opaque
@.str = private unnamed_addr constant [24 x i8] c"***** %d^%d = %d *****\0A\00", align 1
@totalLoops = dso_local global i32 0, align 4
@dynamicTCVal = dso_local local_unnamed_addr global i32 0, align 4
@initCGRA = dso_local local_unnamed_addr global i32* null, align 4
@epilog = dso_local local_unnamed_addr global i32* null, align 4
@prolog = dso_local local_unnamed_addr global i32* null, align 4
@kernel = dso_local local_unnamed_addr global i32* null, align 4
@prologPtr = dso_local local_unnamed_addr global i32* null, align 4
@epilogPtr = dso_local local_unnamed_addr global i32* null, align 4
@kernelPtr = dso_local local_unnamed_addr global i32* null, align 4
@ArrPtr = dso_local local_unnamed_addr global i32* null, align 4
@pth = dso_local local_unnamed_addr global i32 0, align 4
@str = private unnamed_addr constant [34 x i8] c"from cgra.c Initialize Parameters\00", align 1
@__const.configureCGRA.directoryPath = private unnamed_addr constant [20 x i8] c"./CGRAExec/L\00\00\00\00\00\00\00\00", align 1
@.str.1 = private unnamed_addr constant [3 x i8] c"%d\00", align 1
@.str.2 = private unnamed_addr constant [16 x i8] c"/epilog_ins.bin\00", align 1
@.str.3 = private unnamed_addr constant [16 x i8] c"/prolog_ins.bin\00", align 1
@.str.4 = private unnamed_addr constant [16 x i8] c"/kernel_ins.bin\00", align 1
@.str.5 = private unnamed_addr constant [17 x i8] c"/CGRA_config.txt\00", align 1
@.str.6 = private unnamed_addr constant [3 x i8] c"rb\00", align 1
@.str.7 = private unnamed_addr constant [2 x i8] c"r\00", align 1
@.str.8 = private unnamed_addr constant [32 x i8] c"\0A**********EPISIZE %d*********\0A\00", align 1
@.str.9 = private unnamed_addr constant [32 x i8] c"\0A**********PROSIZE %d*********\0A\00", align 1
@.str.10 = private unnamed_addr constant [33 x i8] c"\0A**********KERNSIZE %d*********\0A\00", align 1
@.str.11 = private unnamed_addr constant [37 x i8] c"\0A******SIZE OF UNSIGNED LONG%d*****\0A\00", align 1
@.str.12 = private unnamed_addr constant [42 x i8] c"\0A******SIZE OF UNSIGNED LONG LONG%d*****\0A\00", align 1
@.str.13 = private unnamed_addr constant [26 x i8] c"/livevar_st_ins_count.txt\00", align 1
@.str.14 = private unnamed_addr constant [39 x i8] c"\0A************XDIM and YDim are %d, %d\0A\00", align 1
@.str.15 = private unnamed_addr constant [18 x i8] c"/kernel_count.txt\00", align 1
@.str.16 = private unnamed_addr constant [16 x i8] c"Loop Count: %d\0A\00", align 1
@.str.17 = private unnamed_addr constant [55 x i8] c"From FILE: PROLOGPC= %lx, EPILOGPC=%lx, KernelPC=%lx\0A\00", align 1
@str.34 = private unnamed_addr constant [14 x i8] c"configureCGRA\00", align 1
@.str.19 = private unnamed_addr constant [14 x i8] c"\0Aloopno = %s\0A\00", align 1
@.str.20 = private unnamed_addr constant [17 x i8] c"newTC = %d + %d\0A\00", align 1
@__const.configureCGRA.initCGRAfile = private unnamed_addr constant [40 x i8] c"./CGRAExec/L1\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1
@.str.21 = private unnamed_addr constant [14 x i8] c"/initCGRA.txt\00", align 1
@.str.22 = private unnamed_addr constant [3 x i8] c"wb\00", align 1
@.str.23 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1
@.str.24 = private unnamed_addr constant [5 x i8] c"%ld\0A\00", align 1
@str.35 = private unnamed_addr constant [16 x i8] c"checkTotalLoops\00", align 1
@__const.checkTotalLoops.myfile = private unnamed_addr constant [40 x i8] c"./CGRAExec/total_loops.txt\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1
@.str.26 = private unnamed_addr constant [3 x i8] c"%u\00", align 1
@str.36 = private unnamed_addr constant [12 x i8] c"\0A\0ArunOnCGRA\00", align 1
@str.37 = private unnamed_addr constant [19 x i8] c"\0A\0AaccelerateOnCGRA\00", align 1
@.str.30 = private unnamed_addr constant [35 x i8] c"Core will execute loop %u on CGRA\0A\00", align 1
@str.38 = private unnamed_addr constant [15 x i8] c"\0Adeleting cgra\00", align 1
@str.39 = private unnamed_addr constant [11 x i8] c"createCGRA\00", align 1
@str.40 = private unnamed_addr constant [35 x i8] c"Main thread calling CGRA thread...\00", align 1
; Function Attrs: nofree nounwind
define dso_local i32 @main(i32 %0, i8** nocapture readonly %1) local_unnamed_addr #0 {
%3 = getelementptr inbounds i8*, i8** %1, i32 1
%4 = load i8*, i8** %3, align 4, !tbaa !5
%5 = tail call i32 @strtol(i8* nocapture nonnull %4, i8** null, i32 10) #11
%6 = icmp sgt i32 %5, 1
br i1 %6, label %.preheader.preheader, label %.loopexit
.preheader.preheader: ; preds = %2
br label %.preheader
.loopexit.loopexit: ; preds = %.preheader
br label %.loopexit
.loopexit: ; preds = %.loopexit.loopexit, %2
%7 = phi i32 [ 1, %2 ], [ %11, %.loopexit.loopexit ]
%8 = tail call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i32 0, i32 0), i32 2, i32 %5, i32 %7)
ret i32 0
.preheader: ; preds = %.preheader.preheader, %.preheader
%9 = phi i32 [ %12, %.preheader ], [ 1, %.preheader.preheader ]
%10 = phi i32 [ %11, %.preheader ], [ 1, %.preheader.preheader ]
%11 = shl nsw i32 %10, 1
%12 = add nuw nsw i32 %9, 1
%13 = icmp eq i32 %12, %5
br i1 %13, label %.loopexit.loopexit, label %.preheader, !llvm.loop !9
}
; Function Attrs: nofree nounwind willreturn
declare dso_local i32 @strtol(i8* readonly, i8** nocapture, i32) local_unnamed_addr #1
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @printf(i8* nocapture noundef readonly, ...) local_unnamed_addr #2
; Function Attrs: nounwind
define dso_local i32 @initializeParameters(i32 %0) local_unnamed_addr #3 {
%2 = alloca [25 x i8], align 1
%3 = alloca [20 x i8], align 1
%4 = alloca [40 x i8], align 1
%5 = alloca [40 x i8], align 1
%6 = alloca [40 x i8], align 1
%7 = alloca [40 x i8], align 1
%8 = alloca [40 x i8], align 1
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca i32, align 4
%12 = alloca i32, align 4
%13 = alloca [256 x i8], align 1
%14 = alloca [40 x i8], align 1
%15 = alloca i32, align 4
%16 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str, i32 0, i32 0))
%17 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%18 = add i32 %0, -1
%19 = mul i32 %18, 7
%20 = getelementptr inbounds i32, i32* %17, i32 %19
store i32 2011168768, i32* %20, align 4, !tbaa !13
%21 = getelementptr inbounds i32, i32* %20, i32 1
store i32 2011168768, i32* %21, align 4, !tbaa !13
%22 = getelementptr inbounds i32, i32* %20, i32 2
%23 = getelementptr inbounds [25 x i8], [25 x i8]* %2, i32 0, i32 0
%24 = bitcast i32* %22 to i8*
tail call void @llvm.memset.p0i8.i64(i8* nonnull align 4 dereferenceable(20) %24, i8 0, i64 20, i1 false)
call void @llvm.lifetime.start.p0i8(i64 25, i8* nonnull %23) #11
%25 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 20, i8* nonnull %25) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(20) %25, i8* nonnull align 1 dereferenceable(20) getelementptr inbounds ([20 x i8], [20 x i8]* @__const.configureCGRA.directoryPath, i32 0, i32 0), i32 20, i1 false)
%26 = call i32 (i8*, i8*, ...) @sprintf(i8* nonnull %23, i8* nonnull dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32 %0) #11
%27 = call i8* @strcat(i8* nonnull %25, i8* nonnull %23) #11
%28 = getelementptr inbounds [40 x i8], [40 x i8]* %4, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %28) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %28, i8 0, i32 40, i1 false)
%29 = getelementptr inbounds [40 x i8], [40 x i8]* %5, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %29) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %29, i8 0, i32 40, i1 false)
%30 = getelementptr inbounds [40 x i8], [40 x i8]* %6, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %30) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %30, i8 0, i32 40, i1 false)
%31 = getelementptr inbounds [40 x i8], [40 x i8]* %7, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %31) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %31, i8 0, i32 40, i1 false)
%32 = getelementptr inbounds [40 x i8], [40 x i8]* %8, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %32) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %32, i8 0, i32 40, i1 false)
%33 = call i8* @strcat(i8* nonnull %28, i8* nonnull %25) #11
%34 = call i32 @strlen(i8* nonnull %28)
%35 = getelementptr [40 x i8], [40 x i8]* %4, i32 0, i32 %34
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(16) %35, i8* nonnull align 1 dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.2, i32 0, i32 0), i32 16, i1 false)
%36 = call i8* @strcat(i8* nonnull %29, i8* nonnull %25) #11
%37 = call i32 @strlen(i8* nonnull %29)
%38 = getelementptr [40 x i8], [40 x i8]* %5, i32 0, i32 %37
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(16) %38, i8* nonnull align 1 dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.3, i32 0, i32 0), i32 16, i1 false)
%39 = call i8* @strcat(i8* nonnull %30, i8* nonnull %25) #11
%40 = call i32 @strlen(i8* nonnull %30)
%41 = getelementptr [40 x i8], [40 x i8]* %6, i32 0, i32 %40
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(16) %41, i8* nonnull align 1 dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i32 0, i32 0), i32 16, i1 false)
%42 = call i8* @strcat(i8* nonnull %32, i8* nonnull %25) #11
%43 = call i32 @strlen(i8* nonnull %32)
%44 = getelementptr [40 x i8], [40 x i8]* %8, i32 0, i32 %43
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(17) %44, i8* nonnull align 1 dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.5, i32 0, i32 0), i32 17, i1 false)
%45 = call %struct._IO_FILE* @fopen(i8* nonnull %28, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i32 0, i32 0))
%46 = call %struct._IO_FILE* @fopen(i8* nonnull %29, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i32 0, i32 0))
%47 = call %struct._IO_FILE* @fopen(i8* nonnull %30, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i32 0, i32 0))
%48 = call %struct._IO_FILE* @fopen(i8* nonnull %32, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%49 = bitcast i32* %9 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %49) #11
%50 = bitcast i32* %10 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %50) #11
%51 = bitcast i32* %11 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %51) #11
%52 = bitcast i32* %12 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %52) #11
%53 = call i32 @fread(i8* nonnull %49, i32 4, i32 1, %struct._IO_FILE* %45)
%54 = call i32 @fread(i8* nonnull %50, i32 4, i32 1, %struct._IO_FILE* %46)
%55 = call i32 @fread(i8* nonnull %51, i32 4, i32 1, %struct._IO_FILE* %47)
%56 = load i32, i32* %9, align 4, !tbaa !13
%57 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.8, i32 0, i32 0), i32 %56)
%58 = load i32, i32* %10, align 4, !tbaa !13
%59 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.9, i32 0, i32 0), i32 %58)
%60 = load i32, i32* %11, align 4, !tbaa !13
%61 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.10, i32 0, i32 0), i32 %60)
%62 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.11, i32 0, i32 0), i32 4)
%63 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.12, i32 0, i32 0), i32 8)
%64 = shl i32 %56, 3
%65 = call noalias i8* @malloc(i32 %64) #11
store i8* %65, i8** bitcast (i32** @epilog to i8**), align 4, !tbaa !5
%66 = shl i32 %58, 3
%67 = call noalias i8* @malloc(i32 %66) #11
store i8* %67, i8** bitcast (i32** @prolog to i8**), align 4, !tbaa !5
%68 = shl i32 %60, 3
%69 = call noalias i8* @malloc(i32 %68) #11
store i8* %69, i8** bitcast (i32** @kernel to i8**), align 4, !tbaa !5
%70 = call i32 @fread(i8* %65, i32 8, i32 %56, %struct._IO_FILE* %45)
%71 = load i8*, i8** bitcast (i32** @prolog to i8**), align 4, !tbaa !5
%72 = call i32 @fread(i8* %71, i32 8, i32 %58, %struct._IO_FILE* %46)
%73 = load i8*, i8** bitcast (i32** @kernel to i8**), align 4, !tbaa !5
%74 = call i32 @fread(i8* %73, i32 8, i32 %60, %struct._IO_FILE* %47)
%75 = call i8* @strcat(i8* nonnull %31, i8* nonnull %25) #11
%76 = call i32 @strlen(i8* nonnull %31)
%77 = getelementptr [40 x i8], [40 x i8]* %7, i32 0, i32 %76
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(26) %77, i8* nonnull align 1 dereferenceable(26) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.13, i32 0, i32 0), i32 26, i1 false)
%78 = call %struct._IO_FILE* @fopen(i8* nonnull %31, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%79 = call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %78, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32* nonnull %12) #11
%80 = getelementptr inbounds [256 x i8], [256 x i8]* %13, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 256, i8* nonnull %80) #11
%81 = call i8* @fgets(i8* nonnull %80, i32 256, %struct._IO_FILE* %48)
%82 = icmp eq i8* %81, null
br i1 %82, label %.loopexit, label %.preheader.preheader
.preheader.preheader: ; preds = %1
br label %.preheader
.preheader: ; preds = %.preheader.preheader, %94
%83 = phi i32 [ %96, %94 ], [ 0, %.preheader.preheader ]
%84 = phi i32 [ %95, %94 ], [ 0, %.preheader.preheader ]
%85 = phi i32 [ %86, %94 ], [ 0, %.preheader.preheader ]
%86 = add nuw nsw i32 %85, 1
%87 = icmp eq i32 %85, 0
br i1 %87, label %88, label %90
88: ; preds = %.preheader
%89 = call i32 @strtol(i8* nocapture nonnull %80, i8** null, i32 10) #11
br label %94
90: ; preds = %.preheader
%91 = icmp eq i32 %86, 2
br i1 %91, label %92, label %.loopexit.loopexit
92: ; preds = %90
%93 = call i32 @strtol(i8* nocapture nonnull %80, i8** null, i32 10) #11
br label %94
94: ; preds = %92, %88
%95 = phi i32 [ %84, %88 ], [ %93, %92 ]
%96 = phi i32 [ %89, %88 ], [ %83, %92 ]
%97 = call i8* @fgets(i8* nonnull %80, i32 256, %struct._IO_FILE* %48)
%98 = icmp eq i8* %97, null
br i1 %98, label %.loopexit.loopexit, label %.preheader, !llvm.loop !15
.loopexit.loopexit: ; preds = %94, %90
%.ph = phi i32 [ %95, %94 ], [ %84, %90 ]
%.ph6 = phi i32 [ %96, %94 ], [ %83, %90 ]
br label %.loopexit
.loopexit: ; preds = %.loopexit.loopexit, %1
%99 = phi i32 [ 0, %1 ], [ %.ph, %.loopexit.loopexit ]
%100 = phi i32 [ 0, %1 ], [ %.ph6, %.loopexit.loopexit ]
%101 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.14, i32 0, i32 0), i32 %100, i32 %99)
%102 = mul nsw i32 %100, %99
%103 = sdiv i32 %60, %102
%104 = sdiv i32 %56, %102
%105 = sdiv i32 %58, %102
%106 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%107 = getelementptr inbounds i32, i32* %106, i32 %19
%108 = getelementptr inbounds i32, i32* %107, i32 2
store i32 %103, i32* %108, align 4, !tbaa !13
%109 = getelementptr inbounds i32, i32* %107, i32 3
store i32 %104, i32* %109, align 4, !tbaa !13
%110 = getelementptr inbounds i32, i32* %107, i32 4
store i32 %105, i32* %110, align 4, !tbaa !13
%111 = load i32, i32* %12, align 4, !tbaa !13
%112 = sdiv i32 %111, %102
%113 = getelementptr inbounds i32, i32* %107, i32 6
store i32 %112, i32* %113, align 4, !tbaa !13
%114 = call i32 @fclose(%struct._IO_FILE* %45)
%115 = call i32 @fclose(%struct._IO_FILE* %46)
%116 = call i32 @fclose(%struct._IO_FILE* %47)
%117 = call i32 @fclose(%struct._IO_FILE* %78)
%118 = call i32 @fclose(%struct._IO_FILE* %48)
%119 = getelementptr inbounds [40 x i8], [40 x i8]* %14, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %119) #11
call void @llvm.memset.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %119, i8 0, i32 40, i1 false)
%120 = call i8* @strcat(i8* nonnull %119, i8* nonnull %25) #11
%121 = call i32 @strlen(i8* nonnull %119)
%122 = getelementptr [40 x i8], [40 x i8]* %14, i32 0, i32 %121
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(18) %122, i8* nonnull align 1 dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.15, i32 0, i32 0), i32 18, i1 false)
%123 = bitcast i32* %15 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %123) #11
store i32 0, i32* %15, align 4, !tbaa !13
%124 = call %struct._IO_FILE* @fopen(i8* nonnull %119, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%125 = call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %124, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32* nonnull %15) #11
%126 = call i32 @fclose(%struct._IO_FILE* %124)
%127 = load i32, i32* %15, align 4, !tbaa !13
%128 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i32 0, i32 0), i32 %127)
%129 = load i32, i32* %15, align 4, !tbaa !13
%130 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%131 = getelementptr inbounds i32, i32* %130, i32 %19
%132 = getelementptr inbounds i32, i32* %131, i32 5
store i32 %129, i32* %132, align 4, !tbaa !13
%133 = load i32*, i32** @prolog, align 4, !tbaa !5
%134 = ptrtoint i32* %133 to i32
%135 = load i32*, i32** @epilog, align 4, !tbaa !5
%136 = ptrtoint i32* %135 to i32
%137 = load i32*, i32** @kernel, align 4, !tbaa !5
%138 = ptrtoint i32* %137 to i32
%139 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.17, i32 0, i32 0), i32 %134, i32 %136, i32 %138)
%140 = load i32*, i32** @prolog, align 4, !tbaa !5
%141 = ptrtoint i32* %140 to i32
%142 = load i32*, i32** @prologPtr, align 4, !tbaa !5
%143 = getelementptr inbounds i32, i32* %142, i32 %18
store i32 %141, i32* %143, align 4, !tbaa !16
%144 = load i32*, i32** @epilog, align 4, !tbaa !5
%145 = ptrtoint i32* %144 to i32
%146 = load i32*, i32** @epilogPtr, align 4, !tbaa !5
%147 = getelementptr inbounds i32, i32* %146, i32 %18
store i32 %145, i32* %147, align 4, !tbaa !16
%148 = load i32*, i32** @kernel, align 4, !tbaa !5
%149 = ptrtoint i32* %148 to i32
%150 = load i32*, i32** @kernelPtr, align 4, !tbaa !5
%151 = getelementptr inbounds i32, i32* %150, i32 %18
store i32 %149, i32* %151, align 4, !tbaa !16
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %123) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %119) #11
call void @llvm.lifetime.end.p0i8(i64 256, i8* nonnull %80) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %52) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %51) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %50) #11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %49) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %32) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %31) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %30) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %29) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %28) #11
call void @llvm.lifetime.end.p0i8(i64 20, i8* nonnull %25) #11
call void @llvm.lifetime.end.p0i8(i64 25, i8* nonnull %23) #11
ret i32 0
}
; Function Attrs: nofree nounwind
declare noundef i32 @puts(i8* nocapture noundef readonly) local_unnamed_addr #4
; Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #5
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #6
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i32, i1 immarg) #6
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @sprintf(i8* noalias nocapture noundef writeonly, i8* nocapture noundef readonly, ...) local_unnamed_addr #2
; Function Attrs: argmemonly nofree nounwind willreturn
declare dso_local i8* @strcat(i8* noalias returned writeonly, i8* noalias nocapture readonly) local_unnamed_addr #7
; Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly
declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1 immarg) #5
; Function Attrs: argmemonly nofree nounwind readonly willreturn
declare i32 @strlen(i8* nocapture) local_unnamed_addr #8
; Function Attrs: nofree nounwind
declare dso_local noalias noundef %struct._IO_FILE* @fopen(i8* nocapture noundef readonly, i8* nocapture noundef readonly) local_unnamed_addr #2
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @fread(i8* nocapture noundef, i32 noundef, i32 noundef, %struct._IO_FILE* nocapture noundef) local_unnamed_addr #2
; Function Attrs: inaccessiblememonly nofree nounwind willreturn
declare dso_local noalias noundef i8* @malloc(i32) local_unnamed_addr #9
declare dso_local i32 @__isoc99_fscanf(%struct._IO_FILE*, i8*, ...) local_unnamed_addr #10
; Function Attrs: nofree nounwind
declare dso_local noundef i8* @fgets(i8* noundef, i32 noundef, %struct._IO_FILE* nocapture noundef) local_unnamed_addr #2
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @fclose(%struct._IO_FILE* nocapture noundef) local_unnamed_addr #2
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #6
; Function Attrs: nofree nounwind
define dso_local i32 @configureCGRA(i32 %0) local_unnamed_addr #0 {
%2 = alloca [25 x i8], align 1
%3 = alloca [20 x i8], align 1
%4 = alloca [40 x i8], align 1
%5 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @str.34, i32 0, i32 0))
%6 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%7 = add i32 %0, -1
%8 = mul i32 %7, 7
%9 = getelementptr inbounds i32, i32* %6, i32 %8
%10 = getelementptr inbounds i32, i32* %9, i32 5
%11 = load i32, i32* %10, align 4, !tbaa !13
%12 = getelementptr inbounds [25 x i8], [25 x i8]* %2, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 25, i8* nonnull %12) #11
%13 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 20, i8* nonnull %13) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(20) %13, i8* nonnull align 1 dereferenceable(20) getelementptr inbounds ([20 x i8], [20 x i8]* @__const.configureCGRA.directoryPath, i32 0, i32 0), i32 20, i1 false)
%14 = call i32 (i8*, i8*, ...) @sprintf(i8* nonnull %12, i8* nonnull dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i32 0, i32 0), i32 %0) #11
%15 = call i8* @strcat(i8* nonnull %13, i8* nonnull %12) #11
%16 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.19, i32 0, i32 0), i8* nonnull %12)
%17 = icmp slt i32 %11, 1
br i1 %17, label %18, label %25
18: ; preds = %1
%19 = load i32, i32* @dynamicTCVal, align 4, !tbaa !13
%20 = add nsw i32 %19, %11
%21 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.20, i32 0, i32 0), i32 %11, i32 %19)
%22 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%23 = getelementptr inbounds i32, i32* %22, i32 %8
%24 = getelementptr inbounds i32, i32* %23, i32 5
store i32 %20, i32* %24, align 4, !tbaa !13
br label %25
25: ; preds = %18, %1
%26 = getelementptr inbounds [40 x i8], [40 x i8]* %4, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %26) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %26, i8* nonnull align 1 dereferenceable(40) getelementptr inbounds ([40 x i8], [40 x i8]* @__const.configureCGRA.initCGRAfile, i32 0, i32 0), i32 40, i1 false)
%27 = call i32 @strlen(i8* nonnull %26)
%28 = getelementptr [40 x i8], [40 x i8]* %4, i32 0, i32 %27
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(14) %28, i8* nonnull align 1 dereferenceable(14) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i32 0, i32 0), i32 14, i1 false)
%29 = call %struct._IO_FILE* @fopen(i8* nonnull %26, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.22, i32 0, i32 0))
br label %30
30: ; preds = %30, %25
%31 = phi i32 [ 0, %25 ], [ %37, %30 ]
%32 = load i32*, i32** @initCGRA, align 4, !tbaa !5
%33 = getelementptr inbounds i32, i32* %32, i32 %8
%34 = getelementptr inbounds i32, i32* %33, i32 %31
%35 = load i32, i32* %34, align 4, !tbaa !13
%36 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i32 0, i32 0), i32 %35)
%37 = add nuw nsw i32 %31, 1
%38 = icmp eq i32 %37, 7
br i1 %38, label %39, label %30, !llvm.loop !18
39: ; preds = %30
%40 = load i32*, i32** @epilogPtr, align 4, !tbaa !5
%41 = getelementptr inbounds i32, i32* %40, i32 %7
%42 = load i32, i32* %41, align 4, !tbaa !16
%43 = zext i32 %42 to i64
%44 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i32 0, i32 0), i64 %43)
%45 = load i32*, i32** @prologPtr, align 4, !tbaa !5
%46 = getelementptr inbounds i32, i32* %45, i32 %7
%47 = load i32, i32* %46, align 4, !tbaa !16
%48 = zext i32 %47 to i64
%49 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i32 0, i32 0), i64 %48)
%50 = load i32*, i32** @kernelPtr, align 4, !tbaa !5
%51 = getelementptr inbounds i32, i32* %50, i32 %7
%52 = load i32, i32* %51, align 4, !tbaa !16
%53 = zext i32 %52 to i64
%54 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i32 0, i32 0), i64 %53)
%55 = call i32 @fclose(%struct._IO_FILE* %29)
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %26) #11
call void @llvm.lifetime.end.p0i8(i64 20, i8* nonnull %13) #11
call void @llvm.lifetime.end.p0i8(i64 25, i8* nonnull %12) #11
ret i32 0
}
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @fprintf(%struct._IO_FILE* nocapture noundef, i8* nocapture noundef readonly, ...) local_unnamed_addr #2
; Function Attrs: nounwind
define dso_local void @checkTotalLoops() local_unnamed_addr #3 {
%1 = alloca [40 x i8], align 1
%2 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.35, i32 0, i32 0))
%3 = getelementptr inbounds [40 x i8], [40 x i8]* %1, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %3) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %3, i8* nonnull align 1 dereferenceable(40) getelementptr inbounds ([40 x i8], [40 x i8]* @__const.checkTotalLoops.myfile, i32 0, i32 0), i32 40, i1 false)
%4 = call %struct._IO_FILE* @fopen(i8* nonnull %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0))
%5 = tail call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %4, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i32 0, i32 0), i32* nonnull @totalLoops) #11
%6 = tail call i32 @fclose(%struct._IO_FILE* %4)
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %3) #11
ret void
}
; Function Attrs: nounwind
define dso_local i8* @runOnCGRA() local_unnamed_addr #3 {
%1 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.36, i32 0, i32 0))
tail call void asm sideeffect "mov r11,$0", "r"(i32 15) #11, !srcloc !19
ret i8* null
}
; Function Attrs: nounwind
define dso_local void @accelerateOnCGRA(i32 %0) local_unnamed_addr #3 {
%2 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str.37, i32 0, i32 0))
%3 = tail call i32 @configureCGRA(i32 %0)
%4 = tail call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.30, i32 0, i32 0), i32 %0)
%5 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.36, i32 0, i32 0)) #11
tail call void asm sideeffect "mov r11,$0", "r"(i32 15) #11, !srcloc !19
ret void
}
; Function Attrs: nofree nounwind
define dso_local void @deleteCGRA() local_unnamed_addr #0 {
%1 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @str.38, i32 0, i32 0))
ret void
}
; Function Attrs: nounwind
define dso_local void @createCGRA() local_unnamed_addr #3 {
%1 = alloca [40 x i8], align 1
%2 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.39, i32 0, i32 0))
%3 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.35, i32 0, i32 0)) #11
%4 = getelementptr inbounds [40 x i8], [40 x i8]* %1, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %4) #11
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 dereferenceable(40) %4, i8* nonnull align 1 dereferenceable(40) getelementptr inbounds ([40 x i8], [40 x i8]* @__const.checkTotalLoops.myfile, i32 0, i32 0), i32 40, i1 false) #11
%5 = call %struct._IO_FILE* @fopen(i8* nonnull %4, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0)) #11
%6 = tail call i32 (%struct._IO_FILE*, i8*, ...) @__isoc99_fscanf(%struct._IO_FILE* %5, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i32 0, i32 0), i32* nonnull @totalLoops) #11
%7 = tail call i32 @fclose(%struct._IO_FILE* %5) #11
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %4) #11
%8 = load i32, i32* @totalLoops, align 4, !tbaa !13
%9 = mul i32 %8, 28
%10 = tail call noalias i8* @malloc(i32 %9) #11
store i8* %10, i8** bitcast (i32** @initCGRA to i8**), align 4, !tbaa !5
%11 = shl i32 %8, 2
%12 = tail call noalias i8* @malloc(i32 %11) #11
store i8* %12, i8** bitcast (i32** @prologPtr to i8**), align 4, !tbaa !5
%13 = tail call noalias i8* @malloc(i32 %11) #11
store i8* %13, i8** bitcast (i32** @kernelPtr to i8**), align 4, !tbaa !5
%14 = tail call noalias i8* @malloc(i32 %11) #11
store i8* %14, i8** bitcast (i32** @epilogPtr to i8**), align 4, !tbaa !5
%15 = icmp eq i32 %8, 0
br i1 %15, label %.loopexit, label %.preheader.preheader
.preheader.preheader: ; preds = %0
br label %.preheader
.preheader: ; preds = %.preheader.preheader, %.preheader
%16 = phi i32 [ %18, %.preheader ], [ 1, %.preheader.preheader ]
%17 = tail call i32 @initializeParameters(i32 %16)
%18 = add i32 %16, 1
%19 = load i32, i32* @totalLoops, align 4, !tbaa !13
%20 = icmp ugt i32 %18, %19
br i1 %20, label %.loopexit.loopexit, label %.preheader, !llvm.loop !20
.loopexit.loopexit: ; preds = %.preheader
br label %.loopexit
.loopexit: ; preds = %.loopexit.loopexit, %0
%21 = tail call i32 @puts(i8* nonnull dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.40, i32 0, i32 0))
ret void
}
attributes #0 = { nofree nounwind "disable-tail-calls"="false" "frame-pointer"="none" "min-legal-vector-width"="0" "no-jump-tables"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #1 = { nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #2 = { nofree nounwind "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #3 = { nounwind "disable-tail-calls"="false" "frame-pointer"="none" "min-legal-vector-width"="0" "no-jump-tables"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #4 = { nofree nounwind }
attributes #5 = { argmemonly nofree nosync nounwind willreturn writeonly }
attributes #6 = { argmemonly nofree nosync nounwind willreturn }
attributes #7 = { argmemonly nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #8 = { argmemonly nofree nounwind readonly willreturn }
attributes #9 = { inaccessiblememonly nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #10 = { "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #11 = { nounwind }
!llvm.ident = !{!0, !0}
!llvm.module.flags = !{!1, !2, !3, !4}
!0 = !{!"clang version 13.0.0 (https://github.com/MPSLab-ASU/CCF-20.04/ 05285de7579f417a4d73ad832b8f4cc497f25235)"}
!1 = !{i32 7, !"Dwarf Version", i32 4}
!2 = !{i32 2, !"Debug Info Version", i32 3}
!3 = !{i32 1, !"wchar_size", i32 4}
!4 = !{i32 1, !"min_enum_size", i32 4}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.CGRA.enable"}
!12 = !{!"llvm.loop.unroll.disable"}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = distinct !{!15, !10, !12}
!16 = !{!17, !17, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = distinct !{!18, !10, !12}
!19 = !{i32 5341}
!20 = distinct !{!20, !10, !12}

File diff suppressed because it is too large Load Diff

View File

@ -1,520 +0,0 @@
[root]
type=Root
children=system
eventq_index=0
full_system=false
sim_quantum=0
time_sync_enable=false
time_sync_period=100000000000
time_sync_spin_threshold=100000000
[system]
type=System
children=clk_domain cpu cpu_clk_domain cpu_voltage_domain dvfs_handler mem_ctrls membus redirect_paths0 redirect_paths1 redirect_paths2 voltage_domain
byte_order=little
cache_line_size=64
eventq_index=0
exit_on_work_items=false
init_param=0
m5ops_base=0
mem_mode=atomic
mem_ranges=0:536870912
memories=system.mem_ctrls.dram
mmap_using_noreserve=false
multi_thread=false
num_work_ids=16
readfile=
redirect_paths=system.redirect_paths0 system.redirect_paths1 system.redirect_paths2
shared_backstore=
symbolfile=
thermal_components=
thermal_model=Null
work_begin_ckpt_count=0
work_begin_cpu_id_exit=-1
work_begin_exit_count=0
work_cpus_ckpt_count=0
work_end_ckpt_count=0
work_end_exit_count=0
work_item_id=-1
workload=Null
system_port=system.membus.cpu_side_ports[0]
[system.clk_domain]
type=SrcClockDomain
clock=1000
domain_id=-1
eventq_index=0
init_perf_level=0
voltage_domain=system.voltage_domain
[system.cpu]
type=AtomicCGRA
children=dtb interrupts isa itb power_state tracer workload
CGRA_cols=4
CGRA_rows=4
branchPred=Null
checker=Null
clk_domain=system.cpu_clk_domain
connection=0
cpu_id=0
do_checkpoint_insts=true
do_statistics_insts=true
dtb=system.cpu.dtb
eventq_index=0
fastmem=false
function_trace=false
function_trace_start=0
interrupts=system.cpu.interrupts
isa=system.cpu.isa
itb=system.cpu.itb
max_insts_all_threads=0
max_insts_any_thread=0
numThreads=1
power_gating_on_idle=false
power_model=
power_state=system.cpu.power_state
progress_interval=0
pwr_gating_latency=300
rfsize=4
simpoint_interval=100000000
simpoint_profile=false
simpoint_profile_file=simpoint.bb.gz
simpoint_start_insts=
simulate_data_stalls=false
simulate_inst_stalls=false
socket_id=0
switched_out=false
syscallRetryLatency=10000
system=system
tracer=system.cpu.tracer
wait_for_remote_gdb=false
width=1
workload=system.cpu.workload
dcache_port=system.membus.cpu_side_ports[2]
icache_port=system.membus.cpu_side_ports[1]
[system.cpu.dtb]
type=ArmTLB
children=stage2_mmu walker
eventq_index=0
is_stage2=false
size=64
sys=system
walker=system.cpu.dtb.walker
[system.cpu.dtb.stage2_mmu]
type=ArmStage2MMU
children=stage2_tlb
eventq_index=0
stage2_tlb=system.cpu.dtb.stage2_mmu.stage2_tlb
sys=system
tlb=system.cpu.dtb
[system.cpu.dtb.stage2_mmu.stage2_tlb]
type=ArmTLB
children=walker
eventq_index=0
is_stage2=true
size=32
sys=system
walker=system.cpu.dtb.stage2_mmu.stage2_tlb.walker
[system.cpu.dtb.stage2_mmu.stage2_tlb.walker]
type=ArmTableWalker
children=power_state
clk_domain=system.cpu_clk_domain
eventq_index=0
is_stage2=true
num_squash_per_cycle=2
power_model=
power_state=system.cpu.dtb.stage2_mmu.stage2_tlb.walker.power_state
sys=system
[system.cpu.dtb.stage2_mmu.stage2_tlb.walker.power_state]
type=PowerState
clk_gate_bins=20
clk_gate_max=1000000000000
clk_gate_min=1000
default_state=UNDEFINED
eventq_index=0
leaders=
possible_states=
[system.cpu.dtb.walker]
type=ArmTableWalker
children=power_state
clk_domain=system.cpu_clk_domain
eventq_index=0
is_stage2=false
num_squash_per_cycle=2
power_model=
power_state=system.cpu.dtb.walker.power_state
sys=system
port=system.membus.cpu_side_ports[4]
[system.cpu.dtb.walker.power_state]
type=PowerState
clk_gate_bins=20
clk_gate_max=1000000000000
clk_gate_min=1000
default_state=UNDEFINED
eventq_index=0
leaders=
possible_states=
[system.cpu.interrupts]
type=ArmInterrupts
eventq_index=0
[system.cpu.isa]
type=ArmISA
decoderFlavor=Generic
eventq_index=0
fpsid=1090793632
id_aa64afr0_el1=0
id_aa64afr1_el1=0
id_aa64dfr0_el1=15790086
id_aa64dfr1_el1=0
id_aa64isar0_el1=0
id_aa64isar1_el1=16846864
id_aa64mmfr0_el1=15728642
id_aa64mmfr1_el1=1052672
id_aa64mmfr2_el1=0
id_isar0=34607377
id_isar1=34677009
id_isar2=555950401
id_isar3=17899825
id_isar4=268501314
id_isar5=268435456
id_mmfr0=270536963
id_mmfr1=0
id_mmfr2=19070976
id_mmfr3=34611729
impdef_nop=false
midr=0
pmu=Null
sve_vl_se=1
system=system
[system.cpu.itb]
type=ArmTLB
children=stage2_mmu walker
eventq_index=0
is_stage2=false
size=64
sys=system
walker=system.cpu.itb.walker
[system.cpu.itb.stage2_mmu]
type=ArmStage2MMU
children=stage2_tlb
eventq_index=0
stage2_tlb=system.cpu.itb.stage2_mmu.stage2_tlb
sys=system
tlb=system.cpu.itb
[system.cpu.itb.stage2_mmu.stage2_tlb]
type=ArmTLB
children=walker
eventq_index=0
is_stage2=true
size=32
sys=system
walker=system.cpu.itb.stage2_mmu.stage2_tlb.walker
[system.cpu.itb.stage2_mmu.stage2_tlb.walker]
type=ArmTableWalker
children=power_state
clk_domain=system.cpu_clk_domain
eventq_index=0
is_stage2=true
num_squash_per_cycle=2
power_model=
power_state=system.cpu.itb.stage2_mmu.stage2_tlb.walker.power_state
sys=system
[system.cpu.itb.stage2_mmu.stage2_tlb.walker.power_state]
type=PowerState
clk_gate_bins=20
clk_gate_max=1000000000000
clk_gate_min=1000
default_state=UNDEFINED
eventq_index=0
leaders=
possible_states=
[system.cpu.itb.walker]
type=ArmTableWalker
children=power_state
clk_domain=system.cpu_clk_domain
eventq_index=0
is_stage2=false
num_squash_per_cycle=2
power_model=
power_state=system.cpu.itb.walker.power_state
sys=system
port=system.membus.cpu_side_ports[3]
[system.cpu.itb.walker.power_state]
type=PowerState
clk_gate_bins=20
clk_gate_max=1000000000000
clk_gate_min=1000
default_state=UNDEFINED
eventq_index=0
leaders=
possible_states=
[system.cpu.power_state]
type=PowerState
clk_gate_bins=20
clk_gate_max=1000000000000
clk_gate_min=1000
default_state=UNDEFINED
eventq_index=0
leaders=
possible_states=ON CLK_GATED OFF
[system.cpu.tracer]
type=ExeTracer
eventq_index=0
[system.cpu.workload]
type=Process
cmd=./pow 6
cwd=/home/local/ASUAD/quoclon1/publish_ccf_github/benchmarks/pow
drivers=
egid=100
env=
errout=cerr
euid=100
eventq_index=0
executable=./pow
gid=100
input=cin
kvmInSE=false
maxStackSize=67108864
output=cout
pgid=100
pid=100
ppid=0
release=5.1.0
simpoint=0
system=system
uid=100
useArchPT=false
[system.cpu_clk_domain]
type=SrcClockDomain
clock=500
domain_id=-1
eventq_index=0
init_perf_level=0
voltage_domain=system.cpu_voltage_domain
[system.cpu_voltage_domain]
type=VoltageDomain
eventq_index=0
voltage=1.0
[system.dvfs_handler]
type=DVFSHandler
domains=
enable=false
eventq_index=0
sys_clk_domain=system.clk_domain
transition_latency=100000000
[system.mem_ctrls]
type=MemCtrl
children=dram power_state
clk_domain=system.clk_domain
command_window=10000
dram=system.mem_ctrls.dram
eventq_index=0
mem_sched_policy=frfcfs
min_writes_per_switch=16
nvm=Null
power_model=
power_state=system.mem_ctrls.power_state
qos_policy=Null
qos_priorities=1
qos_priority_escalation=false
qos_q_policy=fifo
qos_requestors=
qos_syncro_scheduler=false
qos_turnaround_policy=Null
static_backend_latency=10000
static_frontend_latency=10000
system=system
write_high_thresh_perc=85
write_low_thresh_perc=50
port=system.membus.mem_side_ports[0]
[system.mem_ctrls.dram]
type=DRAMInterface
children=power_state
IDD0=0.055
IDD02=0.0
IDD2N=0.032
IDD2N2=0.0
IDD2P0=0.0
IDD2P02=0.0
IDD2P1=0.032
IDD2P12=0.0
IDD3N=0.038
IDD3N2=0.0
IDD3P0=0.0
IDD3P02=0.0
IDD3P1=0.038
IDD3P12=0.0
IDD4R=0.157
IDD4R2=0.0
IDD4W=0.125
IDD4W2=0.0
IDD5=0.23500000000000001
IDD52=0.0
IDD6=0.02
IDD62=0.0
VDD=1.5
VDD2=0.0
activation_limit=4
addr_mapping=RoRaBaCoCh
bank_groups_per_rank=0
banks_per_rank=8
beats_per_clock=2
burst_length=8
clk_domain=system.clk_domain
conf_table_reported=true
data_clock_sync=false
device_bus_width=8
device_rowbuffer_size=1024
device_size=536870912
devices_per_rank=8
dll=true
enable_dram_powerdown=false
eventq_index=0
image_file=
in_addr_map=true
kvm_map=true
max_accesses_per_row=16
null=false
page_policy=open_adaptive
power_model=
power_state=system.mem_ctrls.dram.power_state
range=0:536870912
ranks_per_channel=2
read_buffer_size=32
tAAD=1250
tBURST=5000
tBURST_MAX=5000
tBURST_MIN=5000
tCCD_L=0
tCCD_L_WR=0
tCK=1250
tCL=13750
tCS=2500
tPPD=0
tRAS=35000
tRCD=13750
tREFI=7800000
tRFC=260000
tRP=13750
tRRD=6000
tRRD_L=0
tRTP=7500
tRTW=2500
tWR=15000
tWTR=7500
tWTR_L=7500
tXAW=30000
tXP=6000
tXPDLL=0
tXS=270000
tXSDLL=0
two_cycle_activate=false
write_buffer_size=64
[system.mem_ctrls.dram.power_state]
type=PowerState
clk_gate_bins=20
clk_gate_max=1000000000000
clk_gate_min=1000
default_state=UNDEFINED
eventq_index=0
leaders=
possible_states=
[system.mem_ctrls.power_state]
type=PowerState
clk_gate_bins=20
clk_gate_max=1000000000000
clk_gate_min=1000
default_state=UNDEFINED
eventq_index=0
leaders=
possible_states=
[system.membus]
type=CoherentXBar
children=power_state snoop_filter
clk_domain=system.clk_domain
eventq_index=0
forward_latency=4
frontend_latency=3
header_latency=1
max_outstanding_snoops=512
max_routing_table_size=512
point_of_coherency=true
point_of_unification=true
power_model=
power_state=system.membus.power_state
response_latency=2
snoop_filter=system.membus.snoop_filter
snoop_response_latency=4
system=system
use_default_range=false
width=16
cpu_side_ports=system.system_port system.cpu.icache_port system.cpu.dcache_port system.cpu.itb.walker.port system.cpu.dtb.walker.port
mem_side_ports=system.mem_ctrls.port
[system.membus.power_state]
type=PowerState
clk_gate_bins=20
clk_gate_max=1000000000000
clk_gate_min=1000
default_state=UNDEFINED
eventq_index=0
leaders=
possible_states=
[system.membus.snoop_filter]
type=SnoopFilter
eventq_index=0
lookup_latency=1
max_capacity=8388608
system=system
[system.redirect_paths0]
type=RedirectPath
app_path=/proc
eventq_index=0
host_paths=m5out/fs/proc
[system.redirect_paths1]
type=RedirectPath
app_path=/sys
eventq_index=0
host_paths=m5out/fs/sys
[system.redirect_paths2]
type=RedirectPath
app_path=/tmp
eventq_index=0
host_paths=m5out/fs/tmp
[system.voltage_domain]
type=VoltageDomain
eventq_index=0
voltage=1.0

View File

@ -1,686 +0,0 @@
{
"type": "Root",
"cxx_class": "Root",
"name": null,
"path": "root",
"eventq_index": 0,
"full_system": false,
"sim_quantum": 0,
"time_sync_enable": false,
"time_sync_period": 100000000000,
"time_sync_spin_threshold": 100000000,
"system": {
"type": "System",
"cxx_class": "System",
"name": "system",
"path": "system",
"byte_order": "little",
"cache_line_size": 64,
"eventq_index": 0,
"exit_on_work_items": false,
"init_param": 0,
"m5ops_base": 0,
"mem_mode": "atomic",
"mem_ranges": [
"0:536870912"
],
"memories": [
"system.mem_ctrls.dram"
],
"mmap_using_noreserve": false,
"multi_thread": false,
"num_work_ids": 16,
"readfile": "",
"redirect_paths": [
{
"type": "RedirectPath",
"cxx_class": "RedirectPath",
"name": "redirect_paths0",
"path": "system.redirect_paths0",
"app_path": "/proc",
"eventq_index": 0,
"host_paths": [
"m5out/fs/proc"
]
},
{
"type": "RedirectPath",
"cxx_class": "RedirectPath",
"name": "redirect_paths1",
"path": "system.redirect_paths1",
"app_path": "/sys",
"eventq_index": 0,
"host_paths": [
"m5out/fs/sys"
]
},
{
"type": "RedirectPath",
"cxx_class": "RedirectPath",
"name": "redirect_paths2",
"path": "system.redirect_paths2",
"app_path": "/tmp",
"eventq_index": 0,
"host_paths": [
"m5out/fs/tmp"
]
}
],
"shared_backstore": "",
"symbolfile": "",
"thermal_components": [],
"thermal_model": null,
"work_begin_ckpt_count": 0,
"work_begin_cpu_id_exit": -1,
"work_begin_exit_count": 0,
"work_cpus_ckpt_count": 0,
"work_end_ckpt_count": 0,
"work_end_exit_count": 0,
"work_item_id": -1,
"workload": null,
"clk_domain": {
"type": "SrcClockDomain",
"cxx_class": "SrcClockDomain",
"name": "clk_domain",
"path": "system.clk_domain",
"clock": [
1000
],
"domain_id": -1,
"eventq_index": 0,
"init_perf_level": 0,
"voltage_domain": "system.voltage_domain"
},
"cpu": [
{
"type": "AtomicCGRA",
"cxx_class": "AtomicCGRA",
"name": "cpu",
"path": "system.cpu",
"CGRA_cols": 4,
"CGRA_rows": 4,
"branchPred": null,
"checker": null,
"clk_domain": "system.cpu_clk_domain",
"connection": 0,
"cpu_id": 0,
"do_checkpoint_insts": true,
"do_statistics_insts": true,
"dtb": {
"type": "ArmTLB",
"cxx_class": "ArmISA::TLB",
"name": "dtb",
"path": "system.cpu.dtb",
"eventq_index": 0,
"is_stage2": false,
"size": 64,
"sys": "system",
"walker": {
"type": "ArmTableWalker",
"cxx_class": "ArmISA::TableWalker",
"name": "walker",
"path": "system.cpu.dtb.walker",
"clk_domain": "system.cpu_clk_domain",
"eventq_index": 0,
"is_stage2": false,
"num_squash_per_cycle": 2,
"power_model": [],
"power_state": {
"type": "PowerState",
"cxx_class": "PowerState",
"name": "power_state",
"path": "system.cpu.dtb.walker.power_state",
"clk_gate_bins": 20,
"clk_gate_max": 1000000000000,
"clk_gate_min": 1000,
"default_state": "UNDEFINED",
"eventq_index": 0,
"leaders": [],
"possible_states": []
},
"sys": "system",
"port": {
"role": "GEM5 REQUESTOR",
"peer": "system.membus.cpu_side_ports[4]",
"is_source": "True"
}
},
"stage2_mmu": {
"type": "ArmStage2MMU",
"cxx_class": "ArmISA::Stage2MMU",
"name": "stage2_mmu",
"path": "system.cpu.dtb.stage2_mmu",
"eventq_index": 0,
"stage2_tlb": {
"type": "ArmTLB",
"cxx_class": "ArmISA::TLB",
"name": "stage2_tlb",
"path": "system.cpu.dtb.stage2_mmu.stage2_tlb",
"eventq_index": 0,
"is_stage2": true,
"size": 32,
"sys": "system",
"walker": {
"type": "ArmTableWalker",
"cxx_class": "ArmISA::TableWalker",
"name": "walker",
"path": "system.cpu.dtb.stage2_mmu.stage2_tlb.walker",
"clk_domain": "system.cpu_clk_domain",
"eventq_index": 0,
"is_stage2": true,
"num_squash_per_cycle": 2,
"power_model": [],
"power_state": {
"type": "PowerState",
"cxx_class": "PowerState",
"name": "power_state",
"path": "system.cpu.dtb.stage2_mmu.stage2_tlb.walker.power_state",
"clk_gate_bins": 20,
"clk_gate_max": 1000000000000,
"clk_gate_min": 1000,
"default_state": "UNDEFINED",
"eventq_index": 0,
"leaders": [],
"possible_states": []
},
"sys": "system"
}
},
"sys": "system",
"tlb": "system.cpu.dtb"
}
},
"eventq_index": 0,
"fastmem": false,
"function_trace": false,
"function_trace_start": 0,
"interrupts": [
{
"type": "ArmInterrupts",
"cxx_class": "ArmISA::Interrupts",
"name": "interrupts",
"path": "system.cpu.interrupts",
"eventq_index": 0
}
],
"isa": [
{
"type": "ArmISA",
"cxx_class": "ArmISA::ISA",
"name": "isa",
"path": "system.cpu.isa",
"decoderFlavor": "Generic",
"eventq_index": 0,
"fpsid": 1090793632,
"id_aa64afr0_el1": 0,
"id_aa64afr1_el1": 0,
"id_aa64dfr0_el1": 15790086,
"id_aa64dfr1_el1": 0,
"id_aa64isar0_el1": 0,
"id_aa64isar1_el1": 16846864,
"id_aa64mmfr0_el1": 15728642,
"id_aa64mmfr1_el1": 1052672,
"id_aa64mmfr2_el1": 0,
"id_isar0": 34607377,
"id_isar1": 34677009,
"id_isar2": 555950401,
"id_isar3": 17899825,
"id_isar4": 268501314,
"id_isar5": 268435456,
"id_mmfr0": 270536963,
"id_mmfr1": 0,
"id_mmfr2": 19070976,
"id_mmfr3": 34611729,
"impdef_nop": false,
"midr": 0,
"pmu": null,
"sve_vl_se": 1,
"system": "system"
}
],
"itb": {
"type": "ArmTLB",
"cxx_class": "ArmISA::TLB",
"name": "itb",
"path": "system.cpu.itb",
"eventq_index": 0,
"is_stage2": false,
"size": 64,
"sys": "system",
"walker": {
"type": "ArmTableWalker",
"cxx_class": "ArmISA::TableWalker",
"name": "walker",
"path": "system.cpu.itb.walker",
"clk_domain": "system.cpu_clk_domain",
"eventq_index": 0,
"is_stage2": false,
"num_squash_per_cycle": 2,
"power_model": [],
"power_state": {
"type": "PowerState",
"cxx_class": "PowerState",
"name": "power_state",
"path": "system.cpu.itb.walker.power_state",
"clk_gate_bins": 20,
"clk_gate_max": 1000000000000,
"clk_gate_min": 1000,
"default_state": "UNDEFINED",
"eventq_index": 0,
"leaders": [],
"possible_states": []
},
"sys": "system",
"port": {
"role": "GEM5 REQUESTOR",
"peer": "system.membus.cpu_side_ports[3]",
"is_source": "True"
}
},
"stage2_mmu": {
"type": "ArmStage2MMU",
"cxx_class": "ArmISA::Stage2MMU",
"name": "stage2_mmu",
"path": "system.cpu.itb.stage2_mmu",
"eventq_index": 0,
"stage2_tlb": {
"type": "ArmTLB",
"cxx_class": "ArmISA::TLB",
"name": "stage2_tlb",
"path": "system.cpu.itb.stage2_mmu.stage2_tlb",
"eventq_index": 0,
"is_stage2": true,
"size": 32,
"sys": "system",
"walker": {
"type": "ArmTableWalker",
"cxx_class": "ArmISA::TableWalker",
"name": "walker",
"path": "system.cpu.itb.stage2_mmu.stage2_tlb.walker",
"clk_domain": "system.cpu_clk_domain",
"eventq_index": 0,
"is_stage2": true,
"num_squash_per_cycle": 2,
"power_model": [],
"power_state": {
"type": "PowerState",
"cxx_class": "PowerState",
"name": "power_state",
"path": "system.cpu.itb.stage2_mmu.stage2_tlb.walker.power_state",
"clk_gate_bins": 20,
"clk_gate_max": 1000000000000,
"clk_gate_min": 1000,
"default_state": "UNDEFINED",
"eventq_index": 0,
"leaders": [],
"possible_states": []
},
"sys": "system"
}
},
"sys": "system",
"tlb": "system.cpu.itb"
}
},
"max_insts_all_threads": 0,
"max_insts_any_thread": 0,
"numThreads": 1,
"power_gating_on_idle": false,
"power_model": [],
"power_state": {
"type": "PowerState",
"cxx_class": "PowerState",
"name": "power_state",
"path": "system.cpu.power_state",
"clk_gate_bins": 20,
"clk_gate_max": 1000000000000,
"clk_gate_min": 1000,
"default_state": "UNDEFINED",
"eventq_index": 0,
"leaders": [],
"possible_states": [
"ON",
"CLK_GATED",
"OFF"
]
},
"progress_interval": 0,
"pwr_gating_latency": 300,
"rfsize": 4,
"simpoint_interval": 100000000,
"simpoint_profile": false,
"simpoint_profile_file": "simpoint.bb.gz",
"simpoint_start_insts": [],
"simulate_data_stalls": false,
"simulate_inst_stalls": false,
"socket_id": 0,
"switched_out": false,
"syscallRetryLatency": 10000,
"system": "system",
"tracer": {
"type": "ExeTracer",
"cxx_class": "Trace::ExeTracer",
"name": "tracer",
"path": "system.cpu.tracer",
"eventq_index": 0
},
"wait_for_remote_gdb": false,
"width": 1,
"workload": [
{
"type": "Process",
"cxx_class": "Process",
"name": "workload",
"path": "system.cpu.workload",
"cmd": [
"./pow",
"6"
],
"cwd": "/home/local/ASUAD/quoclon1/publish_ccf_github/benchmarks/pow",
"drivers": [],
"egid": 100,
"env": [],
"errout": "cerr",
"euid": 100,
"eventq_index": 0,
"executable": "./pow",
"gid": 100,
"input": "cin",
"kvmInSE": false,
"maxStackSize": 67108864,
"output": "cout",
"pgid": 100,
"pid": 100,
"ppid": 0,
"release": "5.1.0",
"simpoint": 0,
"system": "system",
"uid": 100,
"useArchPT": false
}
],
"dcache_port": {
"role": "GEM5 REQUESTOR",
"peer": "system.membus.cpu_side_ports[2]",
"is_source": "True"
},
"icache_port": {
"role": "GEM5 REQUESTOR",
"peer": "system.membus.cpu_side_ports[1]",
"is_source": "True"
}
}
],
"cpu_clk_domain": {
"type": "SrcClockDomain",
"cxx_class": "SrcClockDomain",
"name": "cpu_clk_domain",
"path": "system.cpu_clk_domain",
"clock": [
500
],
"domain_id": -1,
"eventq_index": 0,
"init_perf_level": 0,
"voltage_domain": "system.cpu_voltage_domain"
},
"cpu_voltage_domain": {
"type": "VoltageDomain",
"cxx_class": "VoltageDomain",
"name": "cpu_voltage_domain",
"path": "system.cpu_voltage_domain",
"eventq_index": 0,
"voltage": [
1.0
]
},
"dvfs_handler": {
"type": "DVFSHandler",
"cxx_class": "DVFSHandler",
"name": "dvfs_handler",
"path": "system.dvfs_handler",
"domains": [],
"enable": false,
"eventq_index": 0,
"sys_clk_domain": "system.clk_domain",
"transition_latency": 100000000
},
"mem_ctrls": [
{
"type": "MemCtrl",
"cxx_class": "MemCtrl",
"name": "mem_ctrls",
"path": "system.mem_ctrls",
"clk_domain": "system.clk_domain",
"command_window": 10000,
"dram": {
"type": "DRAMInterface",
"cxx_class": "DRAMInterface",
"name": "dram",
"path": "system.mem_ctrls.dram",
"IDD0": 0.055,
"IDD02": 0.0,
"IDD2N": 0.032,
"IDD2N2": 0.0,
"IDD2P0": 0.0,
"IDD2P02": 0.0,
"IDD2P1": 0.032,
"IDD2P12": 0.0,
"IDD3N": 0.038,
"IDD3N2": 0.0,
"IDD3P0": 0.0,
"IDD3P02": 0.0,
"IDD3P1": 0.038,
"IDD3P12": 0.0,
"IDD4R": 0.157,
"IDD4R2": 0.0,
"IDD4W": 0.125,
"IDD4W2": 0.0,
"IDD5": 0.23500000000000001,
"IDD52": 0.0,
"IDD6": 0.02,
"IDD62": 0.0,
"VDD": 1.5,
"VDD2": 0.0,
"activation_limit": 4,
"addr_mapping": "RoRaBaCoCh",
"bank_groups_per_rank": 0,
"banks_per_rank": 8,
"beats_per_clock": 2,
"burst_length": 8,
"clk_domain": "system.clk_domain",
"conf_table_reported": true,
"data_clock_sync": false,
"device_bus_width": 8,
"device_rowbuffer_size": 1024,
"device_size": 536870912,
"devices_per_rank": 8,
"dll": true,
"enable_dram_powerdown": false,
"eventq_index": 0,
"image_file": "",
"in_addr_map": true,
"kvm_map": true,
"max_accesses_per_row": 16,
"null": false,
"page_policy": "open_adaptive",
"power_model": [],
"power_state": {
"type": "PowerState",
"cxx_class": "PowerState",
"name": "power_state",
"path": "system.mem_ctrls.dram.power_state",
"clk_gate_bins": 20,
"clk_gate_max": 1000000000000,
"clk_gate_min": 1000,
"default_state": "UNDEFINED",
"eventq_index": 0,
"leaders": [],
"possible_states": []
},
"range": "0:536870912",
"ranks_per_channel": 2,
"read_buffer_size": 32,
"tAAD": 1250,
"tBURST": 5000,
"tBURST_MAX": 5000,
"tBURST_MIN": 5000,
"tCCD_L": 0,
"tCCD_L_WR": 0,
"tCK": 1250,
"tCL": 13750,
"tCS": 2500,
"tPPD": 0,
"tRAS": 35000,
"tRCD": 13750,
"tREFI": 7800000,
"tRFC": 260000,
"tRP": 13750,
"tRRD": 6000,
"tRRD_L": 0,
"tRTP": 7500,
"tRTW": 2500,
"tWR": 15000,
"tWTR": 7500,
"tWTR_L": 7500,
"tXAW": 30000,
"tXP": 6000,
"tXPDLL": 0,
"tXS": 270000,
"tXSDLL": 0,
"two_cycle_activate": false,
"write_buffer_size": 64
},
"eventq_index": 0,
"mem_sched_policy": "frfcfs",
"min_writes_per_switch": 16,
"nvm": null,
"power_model": [],
"power_state": {
"type": "PowerState",
"cxx_class": "PowerState",
"name": "power_state",
"path": "system.mem_ctrls.power_state",
"clk_gate_bins": 20,
"clk_gate_max": 1000000000000,
"clk_gate_min": 1000,
"default_state": "UNDEFINED",
"eventq_index": 0,
"leaders": [],
"possible_states": []
},
"qos_policy": null,
"qos_priorities": 1,
"qos_priority_escalation": false,
"qos_q_policy": "fifo",
"qos_requestors": [
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
""
],
"qos_syncro_scheduler": false,
"qos_turnaround_policy": null,
"static_backend_latency": 10000,
"static_frontend_latency": 10000,
"system": "system",
"write_high_thresh_perc": 85,
"write_low_thresh_perc": 50,
"port": {
"role": "GEM5 RESPONDER",
"peer": "system.membus.mem_side_ports[0]",
"is_source": "False"
}
}
],
"membus": {
"type": "CoherentXBar",
"cxx_class": "CoherentXBar",
"name": "membus",
"path": "system.membus",
"clk_domain": "system.clk_domain",
"eventq_index": 0,
"forward_latency": 4,
"frontend_latency": 3,
"header_latency": 1,
"max_outstanding_snoops": 512,
"max_routing_table_size": 512,
"point_of_coherency": true,
"point_of_unification": true,
"power_model": [],
"power_state": {
"type": "PowerState",
"cxx_class": "PowerState",
"name": "power_state",
"path": "system.membus.power_state",
"clk_gate_bins": 20,
"clk_gate_max": 1000000000000,
"clk_gate_min": 1000,
"default_state": "UNDEFINED",
"eventq_index": 0,
"leaders": [],
"possible_states": []
},
"response_latency": 2,
"snoop_filter": {
"type": "SnoopFilter",
"cxx_class": "SnoopFilter",
"name": "snoop_filter",
"path": "system.membus.snoop_filter",
"eventq_index": 0,
"lookup_latency": 1,
"max_capacity": 8388608,
"system": "system"
},
"snoop_response_latency": 4,
"system": "system",
"use_default_range": false,
"width": 16,
"cpu_side_ports": {
"role": "GEM5 RESPONDER",
"peer": [
"system.system_port",
"system.cpu.icache_port",
"system.cpu.dcache_port",
"system.cpu.itb.walker.port",
"system.cpu.dtb.walker.port"
],
"is_source": "False"
},
"mem_side_ports": {
"role": "GEM5 REQUESTOR",
"peer": [
"system.mem_ctrls.port"
],
"is_source": "True"
}
},
"voltage_domain": {
"type": "VoltageDomain",
"cxx_class": "VoltageDomain",
"name": "voltage_domain",
"path": "system.voltage_domain",
"eventq_index": 0,
"voltage": [
1.0
]
},
"system_port": {
"role": "GEM5 REQUESTOR",
"peer": "system.membus.cpu_side_ports[0]",
"is_source": "True"
}
}
}

View File

@ -1,19 +0,0 @@
processor : 0
vendor_id : Generic
cpu family : 0
model : 0
model name : Generic
stepping : 0
cpu MHz : 2000.000
cache size: : 2048.0K
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
fpu : yes
fpu exception : yes
cpuid level : 1
wp : yes
flags : fpu
cache alignment : 64

View File

@ -1,2 +0,0 @@
cpu 0 0 0 0 0 0 0
cpu0 0 0 0 0 0 0 0

View File

@ -1,512 +0,0 @@
---------- Begin Simulation Statistics ----------
final_tick 40238500 # Number of ticks from beginning of simulation (restored from checkpoints and never reset)
host_inst_rate 253216 # Simulator instruction rate (inst/s)
host_mem_usage 649276 # Number of bytes of host memory used
host_op_rate 305944 # Simulator op (including micro ops) rate (op/s)
host_seconds 0.26 # Real time elapsed on the host
host_tick_rate 153182512 # Simulator tick rate (ticks/s)
sim_freq 1000000000000 # Frequency of simulated ticks
sim_insts 66485 # Number of instructions simulated
sim_ops 80361 # Number of ops (including micro ops) simulated
sim_seconds 0.000040 # Number of seconds simulated
sim_ticks 40238500 # Number of ticks simulated
system.cpu.Branches 15435 # Number of branches fetched
system.cpu.committedInsts 66485 # Number of instructions committed
system.cpu.committedOps 80361 # Number of ops (including micro ops) committed
system.cpu.idle_fraction 0.000000 # Percentage of idle cycles
system.cpu.not_idle_fraction 1.000000 # Percentage of non-idle cycles
system.cpu.numCycles 80478 # number of cpu cycles simulated
system.cpu.numWorkItemsCompleted 0 # number of work items this cpu completed
system.cpu.numWorkItemsStarted 0 # number of work items this cpu started
system.cpu.num_busy_cycles 80477.998000 # Number of busy cycles
system.cpu.num_cc_register_reads 241335 # number of times the CC registers were read
system.cpu.num_cc_register_writes 34861 # number of times the CC registers were written
system.cpu.num_conditional_control_insts 10904 # number of instructions that are conditional controls
system.cpu.num_fp_alu_accesses 0 # Number of float alu accesses
system.cpu.num_fp_insts 0 # number of float instructions
system.cpu.num_fp_register_reads 0 # number of times the floating registers were read
system.cpu.num_fp_register_writes 0 # number of times the floating registers were written
system.cpu.num_func_calls 3485 # number of times a function call or return occured
system.cpu.num_idle_cycles 0.002000 # Number of idle cycles
system.cpu.num_int_alu_accesses 68835 # Number of integer alu accesses
system.cpu.num_int_insts 68835 # number of integer instructions
system.cpu.num_int_register_reads 112967 # number of times the integer registers were read
system.cpu.num_int_register_writes 45210 # number of times the integer registers were written
system.cpu.num_load_insts 15769 # Number of load instructions
system.cpu.num_mem_refs 28396 # number of memory refs
system.cpu.num_store_insts 12627 # Number of store instructions
system.cpu.num_vec_alu_accesses 0 # Number of vector alu accesses
system.cpu.num_vec_insts 0 # number of vector instructions
system.cpu.num_vec_register_reads 132 # number of times the vector registers were read
system.cpu.num_vec_register_writes 68 # number of times the vector registers were written
system.cpu.op_class::No_OpClass 0 0.00% 0.00% # Class of executed instruction
system.cpu.op_class::IntAlu 51942 64.57% 64.57% # Class of executed instruction
system.cpu.op_class::IntMult 106 0.13% 64.70% # Class of executed instruction
system.cpu.op_class::IntDiv 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::FloatAdd 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::FloatCmp 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::FloatCvt 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::FloatMult 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::FloatMultAcc 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::FloatDiv 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::FloatMisc 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::FloatSqrt 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdAdd 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdAddAcc 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdAlu 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdCmp 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdCvt 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdMisc 1 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdMult 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdMultAcc 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdShift 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdShiftAcc 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdDiv 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdSqrt 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdFloatAdd 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdFloatAlu 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdFloatCmp 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdFloatCvt 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdFloatDiv 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdFloatMisc 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdFloatMult 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdFloatMultAcc 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdFloatSqrt 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdReduceAdd 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdReduceAlu 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdReduceCmp 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdFloatReduceAdd 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdFloatReduceCmp 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdAes 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdAesMix 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdSha1Hash 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdSha1Hash2 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdSha256Hash 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdSha256Hash2 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdShaSigma2 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdShaSigma3 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::SimdPredAlu 0 0.00% 64.70% # Class of executed instruction
system.cpu.op_class::MemRead 15769 19.60% 84.30% # Class of executed instruction
system.cpu.op_class::MemWrite 12627 15.70% 100.00% # Class of executed instruction
system.cpu.op_class::FloatMemRead 0 0.00% 100.00% # Class of executed instruction
system.cpu.op_class::FloatMemWrite 0 0.00% 100.00% # Class of executed instruction
system.cpu.op_class::IprAccess 0 0.00% 100.00% # Class of executed instruction
system.cpu.op_class::InstPrefetch 0 0.00% 100.00% # Class of executed instruction
system.cpu.op_class::total 80445 # Class of executed instruction
system.cpu.workload.numSyscalls 75 # Number of system calls
system.membus.snoop_filter.hit_multi_requests 0 # Number of requests hitting in the snoop filter with multiple (>1) holders of the requested data.
system.membus.snoop_filter.hit_multi_snoops 0 # Number of snoops hitting in the snoop filter with multiple (>1) holders of the requested data.
system.membus.snoop_filter.hit_single_requests 0 # Number of requests hitting in the snoop filter with a single holder of the requested data.
system.membus.snoop_filter.hit_single_snoops 0 # Number of snoops hitting in the snoop filter with a single holder of the requested data.
system.membus.snoop_filter.tot_requests 0 # Total number of requests made to the snoop filter.
system.membus.snoop_filter.tot_snoops 0 # Total number of snoops made to the snoop filter.
system.clk_domain.clock 1000 # Clock period in ticks
system.cpu.dtb.instHits 0 # ITB inst hits
system.cpu.dtb.instMisses 0 # ITB inst misses
system.cpu.dtb.readHits 0 # DTB read hits
system.cpu.dtb.readMisses 0 # DTB read misses
system.cpu.dtb.writeHits 0 # DTB write hits
system.cpu.dtb.writeMisses 0 # DTB write misses
system.cpu.dtb.inserts 0 # Number of times an entry is inserted into the TLB
system.cpu.dtb.flushTlb 0 # Number of times complete TLB was flushed
system.cpu.dtb.flushTlbMva 0 # Number of times TLB was flushed by MVA
system.cpu.dtb.flushTlbMvaAsid 0 # Number of times TLB was flushed by MVA & ASID
system.cpu.dtb.flushTlbAsid 0 # Number of times TLB was flushed by ASID
system.cpu.dtb.flushedEntries 0 # Number of entries that have been flushed from TLB
system.cpu.dtb.alignFaults 0 # Number of TLB faults due to alignment restrictions
system.cpu.dtb.prefetchFaults 0 # Number of TLB faults due to prefetch
system.cpu.dtb.domainFaults 0 # Number of TLB faults due to domain restrictions
system.cpu.dtb.permsFaults 0 # Number of TLB faults due to permissions restrictions
system.cpu.dtb.readAccesses 0 # DTB read accesses
system.cpu.dtb.writeAccesses 0 # DTB write accesses
system.cpu.dtb.instAccesses 0 # ITB inst accesses
system.cpu.dtb.hits 0 # Total TLB (inst and data) hits
system.cpu.dtb.misses 0 # Total TLB (inst and data) misses
system.cpu.dtb.accesses 0 # Total TLB (inst and data) accesses
system.cpu.dtb.stage2_mmu.stage2_tlb.instHits 0 # ITB inst hits
system.cpu.dtb.stage2_mmu.stage2_tlb.instMisses 0 # ITB inst misses
system.cpu.dtb.stage2_mmu.stage2_tlb.readHits 0 # DTB read hits
system.cpu.dtb.stage2_mmu.stage2_tlb.readMisses 0 # DTB read misses
system.cpu.dtb.stage2_mmu.stage2_tlb.writeHits 0 # DTB write hits
system.cpu.dtb.stage2_mmu.stage2_tlb.writeMisses 0 # DTB write misses
system.cpu.dtb.stage2_mmu.stage2_tlb.inserts 0 # Number of times an entry is inserted into the TLB
system.cpu.dtb.stage2_mmu.stage2_tlb.flushTlb 0 # Number of times complete TLB was flushed
system.cpu.dtb.stage2_mmu.stage2_tlb.flushTlbMva 0 # Number of times TLB was flushed by MVA
system.cpu.dtb.stage2_mmu.stage2_tlb.flushTlbMvaAsid 0 # Number of times TLB was flushed by MVA & ASID
system.cpu.dtb.stage2_mmu.stage2_tlb.flushTlbAsid 0 # Number of times TLB was flushed by ASID
system.cpu.dtb.stage2_mmu.stage2_tlb.flushedEntries 0 # Number of entries that have been flushed from TLB
system.cpu.dtb.stage2_mmu.stage2_tlb.alignFaults 0 # Number of TLB faults due to alignment restrictions
system.cpu.dtb.stage2_mmu.stage2_tlb.prefetchFaults 0 # Number of TLB faults due to prefetch
system.cpu.dtb.stage2_mmu.stage2_tlb.domainFaults 0 # Number of TLB faults due to domain restrictions
system.cpu.dtb.stage2_mmu.stage2_tlb.permsFaults 0 # Number of TLB faults due to permissions restrictions
system.cpu.dtb.stage2_mmu.stage2_tlb.readAccesses 0 # DTB read accesses
system.cpu.dtb.stage2_mmu.stage2_tlb.writeAccesses 0 # DTB write accesses
system.cpu.dtb.stage2_mmu.stage2_tlb.instAccesses 0 # ITB inst accesses
system.cpu.dtb.stage2_mmu.stage2_tlb.hits 0 # Total TLB (inst and data) hits
system.cpu.dtb.stage2_mmu.stage2_tlb.misses 0 # Total TLB (inst and data) misses
system.cpu.dtb.stage2_mmu.stage2_tlb.accesses 0 # Total TLB (inst and data) accesses
system.cpu.dtb.stage2_mmu.stage2_tlb.walker.walks 0 # Table walker walks requested
system.cpu.dtb.stage2_mmu.stage2_tlb.walker.requestOrigin_Requested::Data 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.stage2_mmu.stage2_tlb.walker.requestOrigin_Requested::Inst 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.stage2_mmu.stage2_tlb.walker.requestOrigin_Requested::total 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.stage2_mmu.stage2_tlb.walker.requestOrigin_Completed::Data 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.stage2_mmu.stage2_tlb.walker.requestOrigin_Completed::Inst 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.stage2_mmu.stage2_tlb.walker.requestOrigin_Completed::total 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.stage2_mmu.stage2_tlb.walker.requestOrigin::total 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.stage2_mmu.stage2_tlb.walker.power_state.pwrStateResidencyTicks::UNDEFINED 40238500 # Cumulative time (in ticks) in various power states
system.cpu.dtb.walker.walks 0 # Table walker walks requested
system.cpu.dtb.walker.requestOrigin_Requested::Data 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.walker.requestOrigin_Requested::Inst 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.walker.requestOrigin_Requested::total 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.walker.requestOrigin_Completed::Data 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.walker.requestOrigin_Completed::Inst 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.walker.requestOrigin_Completed::total 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.walker.requestOrigin::total 0 # Table walker requests started/completed, data/inst
system.cpu.dtb.walker.power_state.pwrStateResidencyTicks::UNDEFINED 40238500 # Cumulative time (in ticks) in various power states
system.cpu.itb.instHits 0 # ITB inst hits
system.cpu.itb.instMisses 0 # ITB inst misses
system.cpu.itb.readHits 0 # DTB read hits
system.cpu.itb.readMisses 0 # DTB read misses
system.cpu.itb.writeHits 0 # DTB write hits
system.cpu.itb.writeMisses 0 # DTB write misses
system.cpu.itb.inserts 0 # Number of times an entry is inserted into the TLB
system.cpu.itb.flushTlb 0 # Number of times complete TLB was flushed
system.cpu.itb.flushTlbMva 0 # Number of times TLB was flushed by MVA
system.cpu.itb.flushTlbMvaAsid 0 # Number of times TLB was flushed by MVA & ASID
system.cpu.itb.flushTlbAsid 0 # Number of times TLB was flushed by ASID
system.cpu.itb.flushedEntries 0 # Number of entries that have been flushed from TLB
system.cpu.itb.alignFaults 0 # Number of TLB faults due to alignment restrictions
system.cpu.itb.prefetchFaults 0 # Number of TLB faults due to prefetch
system.cpu.itb.domainFaults 0 # Number of TLB faults due to domain restrictions
system.cpu.itb.permsFaults 0 # Number of TLB faults due to permissions restrictions
system.cpu.itb.readAccesses 0 # DTB read accesses
system.cpu.itb.writeAccesses 0 # DTB write accesses
system.cpu.itb.instAccesses 0 # ITB inst accesses
system.cpu.itb.hits 0 # Total TLB (inst and data) hits
system.cpu.itb.misses 0 # Total TLB (inst and data) misses
system.cpu.itb.accesses 0 # Total TLB (inst and data) accesses
system.cpu.itb.stage2_mmu.stage2_tlb.instHits 0 # ITB inst hits
system.cpu.itb.stage2_mmu.stage2_tlb.instMisses 0 # ITB inst misses
system.cpu.itb.stage2_mmu.stage2_tlb.readHits 0 # DTB read hits
system.cpu.itb.stage2_mmu.stage2_tlb.readMisses 0 # DTB read misses
system.cpu.itb.stage2_mmu.stage2_tlb.writeHits 0 # DTB write hits
system.cpu.itb.stage2_mmu.stage2_tlb.writeMisses 0 # DTB write misses
system.cpu.itb.stage2_mmu.stage2_tlb.inserts 0 # Number of times an entry is inserted into the TLB
system.cpu.itb.stage2_mmu.stage2_tlb.flushTlb 0 # Number of times complete TLB was flushed
system.cpu.itb.stage2_mmu.stage2_tlb.flushTlbMva 0 # Number of times TLB was flushed by MVA
system.cpu.itb.stage2_mmu.stage2_tlb.flushTlbMvaAsid 0 # Number of times TLB was flushed by MVA & ASID
system.cpu.itb.stage2_mmu.stage2_tlb.flushTlbAsid 0 # Number of times TLB was flushed by ASID
system.cpu.itb.stage2_mmu.stage2_tlb.flushedEntries 0 # Number of entries that have been flushed from TLB
system.cpu.itb.stage2_mmu.stage2_tlb.alignFaults 0 # Number of TLB faults due to alignment restrictions
system.cpu.itb.stage2_mmu.stage2_tlb.prefetchFaults 0 # Number of TLB faults due to prefetch
system.cpu.itb.stage2_mmu.stage2_tlb.domainFaults 0 # Number of TLB faults due to domain restrictions
system.cpu.itb.stage2_mmu.stage2_tlb.permsFaults 0 # Number of TLB faults due to permissions restrictions
system.cpu.itb.stage2_mmu.stage2_tlb.readAccesses 0 # DTB read accesses
system.cpu.itb.stage2_mmu.stage2_tlb.writeAccesses 0 # DTB write accesses
system.cpu.itb.stage2_mmu.stage2_tlb.instAccesses 0 # ITB inst accesses
system.cpu.itb.stage2_mmu.stage2_tlb.hits 0 # Total TLB (inst and data) hits
system.cpu.itb.stage2_mmu.stage2_tlb.misses 0 # Total TLB (inst and data) misses
system.cpu.itb.stage2_mmu.stage2_tlb.accesses 0 # Total TLB (inst and data) accesses
system.cpu.itb.stage2_mmu.stage2_tlb.walker.walks 0 # Table walker walks requested
system.cpu.itb.stage2_mmu.stage2_tlb.walker.requestOrigin_Requested::Data 0 # Table walker requests started/completed, data/inst
system.cpu.itb.stage2_mmu.stage2_tlb.walker.requestOrigin_Requested::Inst 0 # Table walker requests started/completed, data/inst
system.cpu.itb.stage2_mmu.stage2_tlb.walker.requestOrigin_Requested::total 0 # Table walker requests started/completed, data/inst
system.cpu.itb.stage2_mmu.stage2_tlb.walker.requestOrigin_Completed::Data 0 # Table walker requests started/completed, data/inst
system.cpu.itb.stage2_mmu.stage2_tlb.walker.requestOrigin_Completed::Inst 0 # Table walker requests started/completed, data/inst
system.cpu.itb.stage2_mmu.stage2_tlb.walker.requestOrigin_Completed::total 0 # Table walker requests started/completed, data/inst
system.cpu.itb.stage2_mmu.stage2_tlb.walker.requestOrigin::total 0 # Table walker requests started/completed, data/inst
system.cpu.itb.stage2_mmu.stage2_tlb.walker.power_state.pwrStateResidencyTicks::UNDEFINED 40238500 # Cumulative time (in ticks) in various power states
system.cpu.itb.walker.walks 0 # Table walker walks requested
system.cpu.itb.walker.requestOrigin_Requested::Data 0 # Table walker requests started/completed, data/inst
system.cpu.itb.walker.requestOrigin_Requested::Inst 0 # Table walker requests started/completed, data/inst
system.cpu.itb.walker.requestOrigin_Requested::total 0 # Table walker requests started/completed, data/inst
system.cpu.itb.walker.requestOrigin_Completed::Data 0 # Table walker requests started/completed, data/inst
system.cpu.itb.walker.requestOrigin_Completed::Inst 0 # Table walker requests started/completed, data/inst
system.cpu.itb.walker.requestOrigin_Completed::total 0 # Table walker requests started/completed, data/inst
system.cpu.itb.walker.requestOrigin::total 0 # Table walker requests started/completed, data/inst
system.cpu.itb.walker.power_state.pwrStateResidencyTicks::UNDEFINED 40238500 # Cumulative time (in ticks) in various power states
system.cpu.power_state.pwrStateResidencyTicks::ON 40238500 # Cumulative time (in ticks) in various power states
system.cpu.thread_0.numInsts 0 # Number of Instructions committed
system.cpu.thread_0.numOps 0 # Number of Ops committed
system.cpu.thread_0.numMemRefs 0 # Number of Memory References
system.cpu_clk_domain.clock 500 # Clock period in ticks
system.cpu_voltage_domain.voltage 1 # Voltage in Volts
system.mem_ctrls.priorityMinLatency 0.000000000000 # per QoS priority minimum request to response latency (s)
system.mem_ctrls.priorityMaxLatency 0.000000000000 # per QoS priority maximum request to response latency (s)
system.mem_ctrls.numReadWriteTurnArounds 0 # Number of turnarounds from READ to WRITE
system.mem_ctrls.numWriteReadTurnArounds 0 # Number of turnarounds from WRITE to READ
system.mem_ctrls.numStayReadState 0 # Number of times bus staying in READ state
system.mem_ctrls.numStayWriteState 0 # Number of times bus staying in WRITE state
system.mem_ctrls.readReqs 0 # Number of read requests accepted
system.mem_ctrls.writeReqs 0 # Number of write requests accepted
system.mem_ctrls.readBursts 0 # Number of controller read bursts, including those serviced by the write queue
system.mem_ctrls.writeBursts 0 # Number of controller write bursts, including those merged in the write queue
system.mem_ctrls.servicedByWrQ 0 # Number of controller read bursts serviced by the write queue
system.mem_ctrls.mergedWrBursts 0 # Number of controller write bursts merged with an existing one
system.mem_ctrls.neitherReadNorWriteReqs 0 # Number of requests that are neither read nor write
system.mem_ctrls.avgRdQLen 0.00 # Average read queue length when enqueuing
system.mem_ctrls.avgWrQLen 0.00 # Average write queue length when enqueuing
system.mem_ctrls.numRdRetry 0 # Number of times read queue was full causing retry
system.mem_ctrls.numWrRetry 0 # Number of times write queue was full causing retry
system.mem_ctrls.readPktSize::0 0 # Read request sizes (log2)
system.mem_ctrls.readPktSize::1 0 # Read request sizes (log2)
system.mem_ctrls.readPktSize::2 0 # Read request sizes (log2)
system.mem_ctrls.readPktSize::3 0 # Read request sizes (log2)
system.mem_ctrls.readPktSize::4 0 # Read request sizes (log2)
system.mem_ctrls.readPktSize::5 0 # Read request sizes (log2)
system.mem_ctrls.readPktSize::6 0 # Read request sizes (log2)
system.mem_ctrls.writePktSize::0 0 # Write request sizes (log2)
system.mem_ctrls.writePktSize::1 0 # Write request sizes (log2)
system.mem_ctrls.writePktSize::2 0 # Write request sizes (log2)
system.mem_ctrls.writePktSize::3 0 # Write request sizes (log2)
system.mem_ctrls.writePktSize::4 0 # Write request sizes (log2)
system.mem_ctrls.writePktSize::5 0 # Write request sizes (log2)
system.mem_ctrls.writePktSize::6 0 # Write request sizes (log2)
system.mem_ctrls.rdQLenPdf::0 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::1 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::2 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::3 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::4 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::5 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::6 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::7 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::8 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::9 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::10 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::11 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::12 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::13 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::14 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::15 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::16 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::17 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::18 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::19 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::20 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::21 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::22 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::23 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::24 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::25 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::26 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::27 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::28 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::29 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::30 0 # What read queue length does an incoming req see
system.mem_ctrls.rdQLenPdf::31 0 # What read queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::0 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::1 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::2 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::3 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::4 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::5 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::6 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::7 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::8 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::9 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::10 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::11 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::12 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::13 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::14 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::15 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::16 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::17 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::18 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::19 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::20 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::21 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::22 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::23 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::24 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::25 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::26 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::27 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::28 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::29 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::30 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::31 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::32 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::33 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::34 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::35 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::36 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::37 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::38 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::39 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::40 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::41 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::42 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::43 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::44 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::45 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::46 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::47 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::48 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::49 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::50 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::51 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::52 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::53 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::54 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::55 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::56 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::57 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::58 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::59 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::60 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::61 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::62 0 # What write queue length does an incoming req see
system.mem_ctrls.wrQLenPdf::63 0 # What write queue length does an incoming req see
system.mem_ctrls.bytesReadWrQ 0 # Total number of bytes read from write queue
system.mem_ctrls.bytesReadSys 0 # Total read bytes from the system interface side
system.mem_ctrls.bytesWrittenSys 0 # Total written bytes from the system interface side
system.mem_ctrls.avgRdBWSys 0.00 # Average system read bandwidth in MiByte/s
system.mem_ctrls.avgWrBWSys 0.00 # Average system write bandwidth in MiByte/s
system.mem_ctrls.totGap 0 # Total gap between requests
system.mem_ctrls.avgGap nan # Average gap between requests
system.mem_ctrls.dram.bytes_read::.cpu.inst 270500 # Number of bytes read from this memory
system.mem_ctrls.dram.bytes_read::.cpu.data 71059 # Number of bytes read from this memory
system.mem_ctrls.dram.bytes_read::total 341559 # Number of bytes read from this memory
system.mem_ctrls.dram.bytes_inst_read::.cpu.inst 270500 # Number of instructions bytes read from this memory
system.mem_ctrls.dram.bytes_inst_read::total 270500 # Number of instructions bytes read from this memory
system.mem_ctrls.dram.bytes_written::.cpu.data 47718 # Number of bytes written to this memory
system.mem_ctrls.dram.bytes_written::total 47718 # Number of bytes written to this memory
system.mem_ctrls.dram.num_reads::.cpu.inst 66602 # Number of read requests responded to by this memory
system.mem_ctrls.dram.num_reads::.cpu.data 15588 # Number of read requests responded to by this memory
system.mem_ctrls.dram.num_reads::total 82190 # Number of read requests responded to by this memory
system.mem_ctrls.dram.num_writes::.cpu.data 12255 # Number of write requests responded to by this memory
system.mem_ctrls.dram.num_writes::total 12255 # Number of write requests responded to by this memory
system.mem_ctrls.dram.bw_read::.cpu.inst 6722417585 # Total read bandwidth from this memory (bytes/s)
system.mem_ctrls.dram.bw_read::.cpu.data 1765945550 # Total read bandwidth from this memory (bytes/s)
system.mem_ctrls.dram.bw_read::total 8488363135 # Total read bandwidth from this memory (bytes/s)
system.mem_ctrls.dram.bw_inst_read::.cpu.inst 6722417585 # Instruction read bandwidth from this memory (bytes/s)
system.mem_ctrls.dram.bw_inst_read::total 6722417585 # Instruction read bandwidth from this memory (bytes/s)
system.mem_ctrls.dram.bw_write::.cpu.data 1185879195 # Write bandwidth from this memory (bytes/s)
system.mem_ctrls.dram.bw_write::total 1185879195 # Write bandwidth from this memory (bytes/s)
system.mem_ctrls.dram.bw_total::.cpu.inst 6722417585 # Total bandwidth to/from this memory (bytes/s)
system.mem_ctrls.dram.bw_total::.cpu.data 2951824745 # Total bandwidth to/from this memory (bytes/s)
system.mem_ctrls.dram.bw_total::total 9674242330 # Total bandwidth to/from this memory (bytes/s)
system.mem_ctrls.dram.readBursts 0 # Number of DRAM read bursts
system.mem_ctrls.dram.writeBursts 0 # Number of DRAM write bursts
system.mem_ctrls.dram.perBankRdBursts::0 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::1 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::2 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::3 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::4 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::5 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::6 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::7 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::8 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::9 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::10 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::11 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::12 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::13 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::14 0 # Per bank write bursts
system.mem_ctrls.dram.perBankRdBursts::15 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::0 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::1 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::2 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::3 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::4 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::5 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::6 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::7 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::8 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::9 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::10 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::11 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::12 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::13 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::14 0 # Per bank write bursts
system.mem_ctrls.dram.perBankWrBursts::15 0 # Per bank write bursts
system.mem_ctrls.dram.totQLat 0 # Total ticks spent queuing
system.mem_ctrls.dram.totBusLat 0 # Total ticks spent in databus transfers
system.mem_ctrls.dram.totMemAccLat 0 # Total ticks spent from burst creation until serviced by the DRAM
system.mem_ctrls.dram.avgQLat nan # Average queueing delay per DRAM burst
system.mem_ctrls.dram.avgBusLat nan # Average bus latency per DRAM burst
system.mem_ctrls.dram.avgMemAccLat nan # Average memory access latency per DRAM burst
system.mem_ctrls.dram.readRowHits 0 # Number of row buffer hits during reads
system.mem_ctrls.dram.writeRowHits 0 # Number of row buffer hits during writes
system.mem_ctrls.dram.readRowHitRate nan # Row buffer hit rate for reads
system.mem_ctrls.dram.writeRowHitRate nan # Row buffer hit rate for writes
system.mem_ctrls.dram.bytesRead 0 # Total number of bytes read from DRAM
system.mem_ctrls.dram.bytesWritten 0 # Total number of bytes written to DRAM
system.mem_ctrls.dram.avgRdBW 0 # Average DRAM read bandwidth in MiBytes/s
system.mem_ctrls.dram.avgWrBW 0 # Average DRAM write bandwidth in MiBytes/s
system.mem_ctrls.dram.peakBW 12800.00 # Theoretical peak bandwidth in MiByte/s
system.mem_ctrls.dram.busUtil 0.00 # Data bus utilization in percentage
system.mem_ctrls.dram.busUtilRead 0.00 # Data bus utilization in percentage for reads
system.mem_ctrls.dram.busUtilWrite 0.00 # Data bus utilization in percentage for writes
system.mem_ctrls.dram.pageHitRate nan # Row buffer hit rate, read and write combined
system.mem_ctrls.dram.power_state.pwrStateResidencyTicks::UNDEFINED 40238500 # Cumulative time (in ticks) in various power states
system.mem_ctrls.dram.rank0.actEnergy 0 # Energy for activate commands per rank (pJ)
system.mem_ctrls.dram.rank0.preEnergy 0 # Energy for precharge commands per rank (pJ)
system.mem_ctrls.dram.rank0.readEnergy 0 # Energy for read commands per rank (pJ)
system.mem_ctrls.dram.rank0.writeEnergy 0 # Energy for write commands per rank (pJ)
system.mem_ctrls.dram.rank0.refreshEnergy 0 # Energy for refresh commands per rank (pJ)
system.mem_ctrls.dram.rank0.actBackEnergy 0 # Energy for active background per rank (pJ)
system.mem_ctrls.dram.rank0.preBackEnergy 15451680 # Energy for precharge background per rank (pJ)
system.mem_ctrls.dram.rank0.actPowerDownEnergy 0 # Energy for active power-down per rank (pJ)
system.mem_ctrls.dram.rank0.prePowerDownEnergy 0 # Energy for precharge power-down per rank (pJ)
system.mem_ctrls.dram.rank0.selfRefreshEnergy 0 # Energy for self refresh per rank (pJ)
system.mem_ctrls.dram.rank0.totalEnergy 15451680 # Total energy per rank (pJ)
system.mem_ctrls.dram.rank0.averagePower 384.002386 # Core power per rank (mW)
system.mem_ctrls.dram.rank0.totalIdleTime 0 # Total Idle time Per DRAM Rank
system.mem_ctrls.dram.rank0.pwrStateTime::IDLE 40238500 # Time in different power states
system.mem_ctrls.dram.rank0.pwrStateTime::REF 0 # Time in different power states
system.mem_ctrls.dram.rank0.pwrStateTime::SREF 0 # Time in different power states
system.mem_ctrls.dram.rank0.pwrStateTime::PRE_PDN 0 # Time in different power states
system.mem_ctrls.dram.rank0.pwrStateTime::ACT 0 # Time in different power states
system.mem_ctrls.dram.rank0.pwrStateTime::ACT_PDN 0 # Time in different power states
system.mem_ctrls.dram.rank1.actEnergy 0 # Energy for activate commands per rank (pJ)
system.mem_ctrls.dram.rank1.preEnergy 0 # Energy for precharge commands per rank (pJ)
system.mem_ctrls.dram.rank1.readEnergy 0 # Energy for read commands per rank (pJ)
system.mem_ctrls.dram.rank1.writeEnergy 0 # Energy for write commands per rank (pJ)
system.mem_ctrls.dram.rank1.refreshEnergy 0 # Energy for refresh commands per rank (pJ)
system.mem_ctrls.dram.rank1.actBackEnergy 0 # Energy for active background per rank (pJ)
system.mem_ctrls.dram.rank1.preBackEnergy 15451680 # Energy for precharge background per rank (pJ)
system.mem_ctrls.dram.rank1.actPowerDownEnergy 0 # Energy for active power-down per rank (pJ)
system.mem_ctrls.dram.rank1.prePowerDownEnergy 0 # Energy for precharge power-down per rank (pJ)
system.mem_ctrls.dram.rank1.selfRefreshEnergy 0 # Energy for self refresh per rank (pJ)
system.mem_ctrls.dram.rank1.totalEnergy 15451680 # Total energy per rank (pJ)
system.mem_ctrls.dram.rank1.averagePower 384.002386 # Core power per rank (mW)
system.mem_ctrls.dram.rank1.totalIdleTime 0 # Total Idle time Per DRAM Rank
system.mem_ctrls.dram.rank1.pwrStateTime::IDLE 40238500 # Time in different power states
system.mem_ctrls.dram.rank1.pwrStateTime::REF 0 # Time in different power states
system.mem_ctrls.dram.rank1.pwrStateTime::SREF 0 # Time in different power states
system.mem_ctrls.dram.rank1.pwrStateTime::PRE_PDN 0 # Time in different power states
system.mem_ctrls.dram.rank1.pwrStateTime::ACT 0 # Time in different power states
system.mem_ctrls.dram.rank1.pwrStateTime::ACT_PDN 0 # Time in different power states
system.mem_ctrls.power_state.pwrStateResidencyTicks::UNDEFINED 40238500 # Cumulative time (in ticks) in various power states
system.membus.trans_dist::ReadReq 82010 # Transaction distribution
system.membus.trans_dist::ReadResp 82190 # Transaction distribution
system.membus.trans_dist::WriteReq 12075 # Transaction distribution
system.membus.trans_dist::WriteResp 12075 # Transaction distribution
system.membus.trans_dist::LoadLockedReq 180 # Transaction distribution
system.membus.trans_dist::StoreCondReq 180 # Transaction distribution
system.membus.trans_dist::StoreCondResp 180 # Transaction distribution
system.membus.pkt_count_system.cpu.icache_port::system.mem_ctrls.port 133204 # Packet count per connected requestor and responder (bytes)
system.membus.pkt_count_system.cpu.dcache_port::system.mem_ctrls.port 55686 # Packet count per connected requestor and responder (bytes)
system.membus.pkt_count::total 188890 # Packet count per connected requestor and responder (bytes)
system.membus.pkt_size_system.cpu.icache_port::system.mem_ctrls.port 270500 # Cumulative packet size per connected requestor and responder (bytes)
system.membus.pkt_size_system.cpu.dcache_port::system.mem_ctrls.port 118777 # Cumulative packet size per connected requestor and responder (bytes)
system.membus.pkt_size::total 389277 # Cumulative packet size per connected requestor and responder (bytes)
system.membus.snoops 0 # Total snoops (count)
system.membus.snoopTraffic 0 # Total snoop traffic (bytes)
system.membus.snoop_fanout::samples 94445 # Request fanout histogram
system.membus.snoop_fanout::mean 0 # Request fanout histogram
system.membus.snoop_fanout::stdev 0 # Request fanout histogram
system.membus.snoop_fanout::underflows 0 0.00% 0.00% # Request fanout histogram
system.membus.snoop_fanout::0 94445 100.00% 100.00% # Request fanout histogram
system.membus.snoop_fanout::1 0 0.00% 100.00% # Request fanout histogram
system.membus.snoop_fanout::overflows 0 0.00% 100.00% # Request fanout histogram
system.membus.snoop_fanout::min_value 0 # Request fanout histogram
system.membus.snoop_fanout::max_value 0 # Request fanout histogram
system.membus.snoop_fanout::total 94445 # Request fanout histogram
system.membus.power_state.pwrStateResidencyTicks::UNDEFINED 40238500 # Cumulative time (in ticks) in various power states
system.voltage_domain.voltage 1 # Voltage in Volts
---------- End Simulation Statistics ----------

File diff suppressed because it is too large Load Diff

14
benchmarks/pow/out_cpu Normal file
View File

@ -0,0 +1,14 @@
Global frequency set at 1000000000000 ticks per second
gem5 Simulator System. http://gem5.org
gem5 is copyrighted software; use the --copyright option for details.
gem5 version 20.1.0.4
gem5 compiled Sep 23 2021 18:19:24
gem5 started Sep 23 2021 18:31:43
gem5 executing on en4181851l, pid 3135753
command line: ../../gem5/build/ARM/gem5.opt -d CPU/ ../../gem5/configs/example/se.py -c pow_cpu -o 5
**** REAL SIMULATION ****
Base = 2 - Pow = 5
***** 2^5 = 32 *****
Exiting @ tick 6420000 because exiting with last active thread context

Binary file not shown.

View File

@ -1,20 +1,49 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
<<<<<<< HEAD
=======
/*int sum(int count){
int ret=0;
//int vec[10] = {1,2,3,4,5,6,7,8,9,10};
#pragma CGRA
for(int i=0; i<count; i++)
ret += i;
return ret;
}*/
>>>>>>> 5f2c8bc0fcd0b4b59a263992775796f8c7c9371d
/*int power(int base, int pow){ /*int power(int base, int pow){
if(pow == 0) return 1; if(pow == 0) return 1;
printf("Base = %d - Pow = %d\n", base, pow); printf("Base = %d - Pow = %d\n", base, pow);
int ret = base; int ret = base;
#pragma CGRA #pragma CGRA
for(int i = 1; i < pow - 1; i++) for(int i = 1; i < pow; i++)
ret *= base; ret *= base;
<<<<<<< HEAD
return ret; return ret;
}*/ }*/
=======
return ret;
}*/
>>>>>>> 5f2c8bc0fcd0b4b59a263992775796f8c7c9371d
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
int pow = atoi(argv[1]); int pow = atoi(argv[1]);
<<<<<<< HEAD
int ret = 1; int ret = 1;
=======
int base = 2;
if(pow == 0) return 1;
printf("Base = %d - Pow = %d\n", base, pow);
int ret = base;
#pragma CGRA
for(int i = 1; i < pow; i++)
ret *= base;
>>>>>>> 5f2c8bc0fcd0b4b59a263992775796f8c7c9371d
//int ret = sum(pow); //int ret = sum(pow);
#pragma CGRA #pragma CGRA

View File

@ -1,112 +0,0 @@
; ModuleID = 'pow.c'
source_filename = "pow.c"
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "armv7-none-linux-eabi"
@.str = private unnamed_addr constant [24 x i8] c"***** %d^%d = %d *****\0A\00", align 1
; Function Attrs: nofree nounwind
define dso_local i32 @main(i32 %0, i8** nocapture readonly %1) local_unnamed_addr #0 !dbg !14 {
call void @llvm.dbg.value(metadata i32 %0, metadata !18, metadata !DIExpression()), !dbg !24
call void @llvm.dbg.value(metadata i8** %1, metadata !19, metadata !DIExpression()), !dbg !24
%3 = getelementptr inbounds i8*, i8** %1, i32 1, !dbg !25
%4 = load i8*, i8** %3, align 4, !dbg !25, !tbaa !26
call void @llvm.dbg.value(metadata i8* %4, metadata !30, metadata !DIExpression()) #4, !dbg !38
%5 = tail call i32 @strtol(i8* nocapture nonnull %4, i8** null, i32 10) #4, !dbg !40
call void @llvm.dbg.value(metadata i32 %5, metadata !20, metadata !DIExpression()), !dbg !24
call void @llvm.dbg.value(metadata i32 1, metadata !21, metadata !DIExpression()), !dbg !24
call void @llvm.dbg.value(metadata i32 1, metadata !22, metadata !DIExpression()), !dbg !41
%6 = icmp sgt i32 %5, 1, !dbg !42
br i1 %6, label %10, label %7, !dbg !44
7: ; preds = %10, %2
%8 = phi i32 [ 1, %2 ], [ %13, %10 ], !dbg !24
%9 = tail call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i32 0, i32 0), i32 2, i32 %5, i32 %8), !dbg !45
ret i32 0, !dbg !46
10: ; preds = %2, %10
%11 = phi i32 [ %14, %10 ], [ 1, %2 ]
%12 = phi i32 [ %13, %10 ], [ 1, %2 ]
call void @llvm.dbg.value(metadata i32 %11, metadata !22, metadata !DIExpression()), !dbg !41
call void @llvm.dbg.value(metadata i32 %12, metadata !21, metadata !DIExpression()), !dbg !24
%13 = shl nsw i32 %12, 1, !dbg !47
call void @llvm.dbg.value(metadata i32 %13, metadata !21, metadata !DIExpression()), !dbg !24
%14 = add nuw nsw i32 %11, 1, !dbg !48
call void @llvm.dbg.value(metadata i32 %14, metadata !22, metadata !DIExpression()), !dbg !41
%15 = icmp eq i32 %14, %5, !dbg !42
br i1 %15, label %7, label %10, !dbg !44, !llvm.loop !49
}
; Function Attrs: nofree nounwind
declare dso_local noundef i32 @printf(i8* nocapture noundef readonly, ...) local_unnamed_addr #1
; Function Attrs: nofree nounwind willreturn
declare dso_local i32 @strtol(i8* readonly, i8** nocapture, i32) local_unnamed_addr #2
; Function Attrs: nofree nosync nounwind readnone speculatable willreturn
declare void @llvm.dbg.value(metadata, metadata, metadata) #3
attributes #0 = { nofree nounwind "disable-tail-calls"="false" "frame-pointer"="none" "min-legal-vector-width"="0" "no-jump-tables"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #1 = { nofree nounwind "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #2 = { nofree nounwind willreturn "disable-tail-calls"="false" "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }
attributes #3 = { nofree nosync nounwind readnone speculatable willreturn }
attributes #4 = { nounwind }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!9, !10, !11, !12}
!llvm.ident = !{!13}
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 13.0.0 (https://github.com/MPSLab-ASU/CCF-20.04/ 05285de7579f417a4d73ad832b8f4cc497f25235)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !3, splitDebugInlining: false, nameTableKind: None)
!1 = !DIFile(filename: "pow.c", directory: "/home/local/ASUAD/quoclon1/publish_ccf_github/benchmarks/pow")
!2 = !{}
!3 = !{!4, !5, !8}
!4 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 32)
!6 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 32)
!7 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_unsigned_char)
!8 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 32)
!9 = !{i32 7, !"Dwarf Version", i32 4}
!10 = !{i32 2, !"Debug Info Version", i32 3}
!11 = !{i32 1, !"wchar_size", i32 4}
!12 = !{i32 1, !"min_enum_size", i32 4}
!13 = !{!"clang version 13.0.0 (https://github.com/MPSLab-ASU/CCF-20.04/ 05285de7579f417a4d73ad832b8f4cc497f25235)"}
!14 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 14, type: !15, scopeLine: 15, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !17)
!15 = !DISubroutineType(types: !16)
!16 = !{!4, !4, !5}
!17 = !{!18, !19, !20, !21, !22}
!18 = !DILocalVariable(name: "argc", arg: 1, scope: !14, file: !1, line: 14, type: !4)
!19 = !DILocalVariable(name: "argv", arg: 2, scope: !14, file: !1, line: 14, type: !5)
!20 = !DILocalVariable(name: "pow", scope: !14, file: !1, line: 16, type: !4)
!21 = !DILocalVariable(name: "ret", scope: !14, file: !1, line: 17, type: !4)
!22 = !DILocalVariable(name: "i", scope: !23, file: !1, line: 21, type: !4)
!23 = distinct !DILexicalBlock(scope: !14, file: !1, line: 21, column: 3)
!24 = !DILocation(line: 0, scope: !14)
!25 = !DILocation(line: 16, column: 18, scope: !14)
!26 = !{!27, !27, i64 0}
!27 = !{!"any pointer", !28, i64 0}
!28 = !{!"omnipotent char", !29, i64 0}
!29 = !{!"Simple C/C++ TBAA"}
!30 = !DILocalVariable(name: "__nptr", arg: 1, scope: !31, file: !32, line: 361, type: !35)
!31 = distinct !DISubprogram(name: "atoi", scope: !32, file: !32, line: 361, type: !33, scopeLine: 362, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !37)
!32 = !DIFile(filename: "/usr/arm-linux-gnueabi/include/stdlib.h", directory: "")
!33 = !DISubroutineType(types: !34)
!34 = !{!4, !35}
!35 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !36, size: 32)
!36 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !7)
!37 = !{!30}
!38 = !DILocation(line: 0, scope: !31, inlinedAt: !39)
!39 = distinct !DILocation(line: 16, column: 13, scope: !14)
!40 = !DILocation(line: 363, column: 16, scope: !31, inlinedAt: !39)
!41 = !DILocation(line: 0, scope: !23)
!42 = !DILocation(line: 21, column: 20, scope: !43)
!43 = distinct !DILexicalBlock(scope: !23, file: !1, line: 21, column: 3)
!44 = !DILocation(line: 21, column: 3, scope: !23)
!45 = !DILocation(line: 24, column: 3, scope: !14)
!46 = !DILocation(line: 26, column: 1, scope: !14)
!47 = !DILocation(line: 22, column: 9, scope: !43)
!48 = !DILocation(line: 21, column: 28, scope: !43)
!49 = distinct !{!49, !44, !50, !51, !52, !53}
!50 = !DILocation(line: 22, column: 12, scope: !23)
!51 = !{!"llvm.loop.mustprogress"}
!52 = !{!"llvm.loop.CGRA.enable"}
!53 = !{!"llvm.loop.unroll.disable"}

View File

@ -1,14 +0,0 @@
X,4
Y,4
R,4
IC,0
Cclock,0.7
CPUclock,2
Mem,8GB
MODE,0
ALGO,FalconCrimson
MSA,10
MAPII,10
MAX_MAP,1000
MAX_II,50
LAMBDA,0.02
1 X 4
2 Y 4
3 R 4
4 IC 0
5 Cclock 0.7
6 CPUclock 2
7 Mem 8GB
8 MODE 0
9 ALGO FalconCrimson
10 MSA 10
11 MAPII 10
12 MAX_MAP 1000
13 MAX_II 50
14 LAMBDA 0.02

View File

@ -1,14 +0,0 @@
4
4
4
0
0.7
2
8GB
0
FalconCrimson
10
10
1000
50
0.02

View File

@ -1,5 +0,0 @@
3 0 1 TRU 0
2 1 1 TRU 0
1 2 0 TRU 0
0 3 0 TRU 0
3 4 0 TRU 0

View File

@ -1,5 +0,0 @@
0 29 1
1 29 1
2 2 1
3 0 1
4 10 1

View File

@ -1,33 +0,0 @@
digraph Success_MS_ {
{
0 [color=red ];
1 [color=red ];
2 [color=red ];
3 [color=red ];
4 [color=red ];
3 -> 0 [style=bold, color=red, label=1]
2 -> 1 [style=bold, color=red, label=1]
1 -> 2
0 -> 3
3 -> 4
}
{
node [shape=plaintext];
T0 -> T1;
}{ rank = same;
0; 1; 4; T0;
};
{ rank = same;
2; 3; T1;
};
{ rank = same;
};
}

View File

@ -1,788 +0,0 @@
UPDATING EDGES 3:0
UPDATING DEPENDENCY EDGES FOR NODE 0:1
UPDATING EDGES 2:1
UPDATING DEPENDENCY EDGES FOR NODE 1:1
UPDATING EDGES 1:2
UPDATING EDGES 0:3
UPDATING EDGES 3:4
UPDATING EDGES 5:0
UPDATING EDGES 8:1
UPDATING EDGES 11:2
UPDATING EDGES 14:3
UPDATING EDGES 15:4
UPDATING EDGES 119:120
UPDATING EDGES 2:120
UPDATING EDGES 118:120
file ptr:0 open:1 prolog_size:64
64
32
16
*********KERNEL*****************
*********EPILOG*****************
LiveOut_data_pe: 8 liveOut_data: 2
LiveOut_add_pe: 10 liveOut_add: 119
PE: 0 Configuration Boundary: 0 10e004000
PE: 1 Configuration Boundary: 0 10e004000
PE: 2 Configuration Boundary: 0 10e004000
PE: 3 Configuration Boundary: 0 10e004000
PE: 4 Configuration Boundary: 0 10e004000
PE: 5 Configuration Boundary: 0 10e004000
PE: 6 Configuration Boundary: 0 10e004000
PE: 7 Configuration Boundary: 0 10e004000
PE: 8 Configuration Boundary: 0 10e004000
PE: 9 Configuration Boundary: 0 10e004000
PE: 10 Configuration Boundary: 0 10e004000
PE: 11 Configuration Boundary: 0 10e004000
PE: 12 Configuration Boundary: 0 10e004000
PE: 13 Configuration Boundary: 0 10e004000
PE: 14 Configuration Boundary: 0 10e004000
PE: 15 Configuration Boundary: 0 10e004000
reg_num: 0
Generating Instructions To Store Address (Hex) 9a640
gVar1
Loading dynamic constant value. LDA and LDD are 168c02004: 105c04000 in pe 9
Load Dyn Cons 168c02004 105c04000
reg_num: 0
Generating Instructions To Store Address (Hex) 9a650
gVar2
Loading dynamic constant value. LDA and LDD are 168c02004: 105c04000 in pe 8
Load Dyn Cons 168c02004 105c04000
reg_num: 1
Generating Instructions To Store Address (Hex) 9a658
gVar3
Loading dynamic constant value. LDA and LDD are 168c82004: 105c0c000 in pe 8
Load Dyn Cons 168c82004 105c0c000
reg_num: 0
Generating Instructions To Store Address (Hex) 9a64c
gVar4
Loading dynamic constant value. LDA and LDD are 168c02004: 105c04000 in pe 13
Load Dyn Cons 168c02004 105c04000
reg_num: 1
reg_num: 2
reg_num: 3
reg_num: 2
reg_num: 1
reg_num: 3
Generating Instructions To Store Address (Hex) 9a640
gVar1
Loading dynamic constant value. LDA and LDD are 168d82004: 105c1c000 in pe 9
Load Dyn Cons 168d82004 105c1c000
reg_num: 4
Generating Instructions To Store Address (Hex) 9a650
gVar2
Loading dynamic constant value. LDA and LDD are 168c02004: 105c04000 in pe 8
Load Dyn Cons 168c02004 105c04000
reg_num: 5
Generating Instructions To Store Address (Hex) 9a658
gVar3
Loading dynamic constant value. LDA and LDD are 168c82004: 105c0c000 in pe 8
Load Dyn Cons 168c82004 105c0c000
reg_num: 0
Large Constant (Hex): 1 Constant (Decimal): 1
reg_num: 2
Generating Instructions To Store Address (Hex) 9a64c
gVar4
Loading dynamic constant value. LDA and LDD are 168d02004: 105c14000 in pe 13
Load Dyn Cons 168d02004 105c14000
reg_num: 4
Generating Instructions To Store Address (Hex) 9a644
gVar5
reg_num: 0
Variable Address (Hex): 9a644 Node: 119 PE: 10 Address (Decimal): 632388 RegNum: 0
reg_num: 6
pe mem op
0 3
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 28
9 19
10 3
11 0
12 0
13 13
14 0
15 0
****** Generatina Instructions For Non-Phi Nodes *****
NODES SCHEDULED AT 0
4
FOR NODE 4: Datatype:1 opcode:12 lmux:3 rmux:0 reg1:0 reg2:2 we:0 wreg:0 imm:0 ab:0 db:0
Decoded 1c3040000
NODES SCHEDULED AT 1
2 3
FOR NODE 2: Datatype:1 opcode:2 lmux:7 rmux:0 reg1:0 reg2:5 we:0 wreg:0 imm:0 ab:0 db:0
Decoded 127020000
FOR NODE 3: Datatype:1 opcode:0 lmux:7 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:1 ab:0 db:0
Decoded 107c00001
****** Generating Instructions For Phi Nodes *****
NODES SCHEDULED AT 0
0 1
Phi Instructions
Phi! Prolog! FOR NODE 0: Datatype:1 opcode:1 lmux:0 rmux:0 reg1:3 reg2:0 we:0 wreg:0 imm:1 ab:0 db:0
Decoded 118180001
Phi! Prolog! FOR NODE 1: Datatype:1 opcode:1 lmux:0 rmux:0 reg1:4 reg2:0 we:0 wreg:0 imm:2 ab:0 db:0
Decoded 118000002
Kernel Instructions
FOR NODE 0: Datatype:1 opcode:1 lmux:7 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:0 ab:0 db:0
Decoded 11fc00000
FOR NODE 1: Datatype:1 opcode:1 lmux:7 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:0 ab:0 db:0
Decoded 11fc00000
****** Generating Instructions For Store Nodes For Live Variables*****
NODES SCHEDULED AT 2
NODES SCHEDULED AT STORE CYCLE 0
119 120
FOR NODE 119: Datatype:1 opcode:6 lmux:0 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:4 ab:1 db:0
Decoded 168c02004
FOR NODE 120: Datatype:1 opcode:0 lmux:7 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:0 ab:0 db:1
Decoded 107c01000
*******PROLOG*********
0: 10e004000
1: 10e004000
2: 10e004000
3: 10e004000
4: 10e004000
5: 10e004000
6: 10e004000
7: 10e004000
8: 10e004000
9: 10e004000
10: 10e004000
11: 10e004000
12: 10e004000
13: 10e004000
14: 10e004000
15: 10e004000
16: 11e004001
17: 177e00000
18: 177e00000
19: 177e00000
20: 177e00000
21: 177e00000
22: 177e00000
23: 177e00000
24: 11e004650
25: 11e004640
26: 11e004644
27: 177e00000
28: 177e00000
29: 11e00464c
30: 177e00000
31: 177e00000
32: 12e004000
33: 177e00000
34: 177e00000
35: 177e00000
36: 177e00000
37: 177e00000
38: 177e00000
39: 177e00000
40: 12e00409a
41: 12e00409a
42: 12e00409a
43: 177e00000
44: 177e00000
45: 12e00409a
46: 177e00000
47: 177e00000
48: 13e004000
49: 177e00000
50: 177e00000
51: 177e00000
52: 177e00000
53: 177e00000
54: 177e00000
55: 177e00000
56: 13e004000
57: 13e004000
58: 13e004000
59: 177e00000
60: 177e00000
61: 13e004000
62: 177e00000
63: 177e00000
64: 177e00000
65: 177e00000
66: 177e00000
67: 177e00000
68: 177e00000
69: 177e00000
70: 177e00000
71: 177e00000
72: 167e00000
73: 168c02004
74: 177e00000
75: 177e00000
76: 177e00000
77: 168c02004
78: 177e00000
79: 177e00000
80: 177e00000
81: 177e00000
82: 177e00000
83: 177e00000
84: 177e00000
85: 177e00000
86: 177e00000
87: 177e00000
88: 167e00000
89: 105c04000
90: 177e00000
91: 177e00000
92: 177e00000
93: 105c04000
94: 177e00000
95: 177e00000
96: 177e00000
97: 177e00000
98: 177e00000
99: 177e00000
100: 177e00000
101: 177e00000
102: 177e00000
103: 177e00000
104: 168c02004
105: 11e01c640
106: 177e00000
107: 177e00000
108: 177e00000
109: 11e01464c
110: 177e00000
111: 177e00000
112: 177e00000
113: 177e00000
114: 177e00000
115: 177e00000
116: 177e00000
117: 177e00000
118: 177e00000
119: 177e00000
120: 105c04000
121: 12e01c09a
122: 177e00000
123: 177e00000
124: 177e00000
125: 12e01409a
126: 177e00000
127: 177e00000
128: 177e00000
129: 177e00000
130: 177e00000
131: 177e00000
132: 177e00000
133: 177e00000
134: 177e00000
135: 177e00000
136: 11e00c658
137: 13e01c000
138: 177e00000
139: 177e00000
140: 177e00000
141: 13e014000
142: 177e00000
143: 177e00000
144: 177e00000
145: 177e00000
146: 177e00000
147: 177e00000
148: 177e00000
149: 177e00000
150: 177e00000
151: 177e00000
152: 12e00c09a
153: 168d82004
154: 177e00000
155: 177e00000
156: 177e00000
157: 168d02004
158: 177e00000
159: 177e00000
160: 177e00000
161: 177e00000
162: 177e00000
163: 177e00000
164: 177e00000
165: 177e00000
166: 177e00000
167: 177e00000
168: 13e00c000
169: 105c1c000
170: 177e00000
171: 177e00000
172: 177e00000
173: 105c14000
174: 177e00000
175: 177e00000
176: 177e00000
177: 177e00000
178: 177e00000
179: 177e00000
180: 177e00000
181: 177e00000
182: 177e00000
183: 177e00000
184: 168c82004
185: 11e004644
186: 177e00000
187: 177e00000
188: 177e00000
189: 177e00000
190: 177e00000
191: 177e00000
192: 177e00000
193: 177e00000
194: 177e00000
195: 177e00000
196: 177e00000
197: 177e00000
198: 177e00000
199: 177e00000
200: 105c0c000
201: 12e00409a
202: 177e00000
203: 177e00000
204: 177e00000
205: 177e00000
206: 177e00000
207: 177e00000
208: 177e00000
209: 177e00000
210: 177e00000
211: 177e00000
212: 177e00000
213: 177e00000
214: 177e00000
215: 177e00000
216: 11e004650
217: 13e004000
218: 177e00000
219: 177e00000
220: 177e00000
221: 177e00000
222: 177e00000
223: 177e00000
224: 177e00000
225: 177e00000
226: 177e00000
227: 177e00000
228: 177e00000
229: 177e00000
230: 177e00000
231: 177e00000
232: 12e00409a
233: 177e00000
234: 177e00000
235: 177e00000
236: 177e00000
237: 177e00000
238: 177e00000
239: 177e00000
240: 177e00000
241: 177e00000
242: 177e00000
243: 177e00000
244: 177e00000
245: 177e00000
246: 177e00000
247: 177e00000
248: 13e004000
249: 177e00000
250: 177e00000
251: 177e00000
252: 177e00000
253: 177e00000
254: 177e00000
255: 177e00000
256: 177e00000
257: 177e00000
258: 177e00000
259: 177e00000
260: 177e00000
261: 177e00000
262: 177e00000
263: 177e00000
264: 168c02004
265: 177e00000
266: 177e00000
267: 177e00000
268: 177e00000
269: 177e00000
270: 177e00000
271: 177e00000
272: 177e00000
273: 177e00000
274: 177e00000
275: 177e00000
276: 177e00000
277: 177e00000
278: 177e00000
279: 177e00000
280: 105c04000
281: 177e00000
282: 177e00000
283: 177e00000
284: 177e00000
285: 177e00000
286: 177e00000
287: 177e00000
288: 177e00000
289: 177e00000
290: 177e00000
291: 177e00000
292: 177e00000
293: 177e00000
294: 177e00000
295: 177e00000
296: 11e00c658
297: 177e00000
298: 177e00000
299: 177e00000
300: 177e00000
301: 177e00000
302: 177e00000
303: 177e00000
304: 177e00000
305: 177e00000
306: 177e00000
307: 177e00000
308: 177e00000
309: 177e00000
310: 177e00000
311: 177e00000
312: 12e00c09a
313: 177e00000
314: 177e00000
315: 177e00000
316: 177e00000
317: 177e00000
318: 177e00000
319: 177e00000
320: 177e00000
321: 177e00000
322: 177e00000
323: 177e00000
324: 177e00000
325: 177e00000
326: 177e00000
327: 177e00000
328: 13e00c000
329: 177e00000
330: 177e00000
331: 177e00000
332: 177e00000
333: 177e00000
334: 177e00000
335: 177e00000
336: 177e00000
337: 177e00000
338: 177e00000
339: 177e00000
340: 177e00000
341: 177e00000
342: 177e00000
343: 177e00000
344: 168c82004
345: 177e00000
346: 177e00000
347: 177e00000
348: 177e00000
349: 177e00000
350: 177e00000
351: 177e00000
352: 177e00000
353: 177e00000
354: 177e00000
355: 177e00000
356: 177e00000
357: 177e00000
358: 177e00000
359: 177e00000
360: 105c0c000
361: 177e00000
362: 177e00000
363: 177e00000
364: 177e00000
365: 177e00000
366: 177e00000
367: 177e00000
368: 177e00000
369: 177e00000
370: 177e00000
371: 177e00000
372: 177e00000
373: 177e00000
374: 177e00000
375: 177e00000
376: 177e00000
377: 177e00000
378: 177e00000
379: 177e00000
380: 177e00000
381: 177e00000
382: 177e00000
383: 177e00000
384: 177e00000
385: 177e00000
386: 177e00000
387: 177e00000
388: 177e00000
389: 177e00000
390: 177e00000
391: 177e00000
392: 177e00000
393: 177e00000
394: 177e00000
395: 177e00000
396: 177e00000
397: 177e00000
398: 177e00000
399: 177e00000
400: 177e00000
401: 177e00000
402: 177e00000
403: 177e00000
404: 177e00000
405: 177e00000
406: 177e00000
407: 177e00000
408: 177e00000
409: 177e00000
410: 177e00000
411: 177e00000
412: 177e00000
413: 177e00000
414: 177e00000
415: 177e00000
416: 177e00000
417: 177e00000
418: 177e00000
419: 177e00000
420: 177e00000
421: 177e00000
422: 177e00000
423: 177e00000
424: 177e00000
425: 177e00000
426: 177e00000
427: 177e00000
428: 177e00000
429: 177e00000
430: 177e00000
431: 177e00000
432: 177e00000
433: 177e00000
434: 177e00000
435: 177e00000
436: 177e00000
437: 177e00000
438: 177e00000
439: 177e00000
440: 177e00000
441: 177e00000
442: 177e00000
443: 177e00000
444: 177e00000
445: 177e00000
446: 177e00000
447: 177e00000
448: 177e00000
449: 177e00000
450: 177e00000
451: 177e00000
452: 177e00000
453: 177e00000
454: 177e00000
455: 177e00000
456: 177e00000
457: 177e00000
458: 177e00000
459: 177e00000
460: 177e00000
461: 177e00000
462: 177e00000
463: 177e00000
464: 177e00000
465: 177e00000
466: 177e00000
467: 177e00000
468: 177e00000
469: 177e00000
470: 177e00000
471: 177e00000
472: 177e00000
473: 177e00000
474: 177e00000
475: 177e00000
476: 177e00000
477: 177e00000
478: 177e00000
479: 177e00000
480: 177e00000
481: 177e00000
482: 177e00000
483: 177e00000
484: 177e00000
485: 177e00000
486: 177e00000
487: 177e00000
488: 118000002
489: 118180001
490: 177e00000
491: 177e00000
492: 177e00000
493: 177e00000
494: 177e00000
495: 177e00000
496: 177e00000
497: 177e00000
498: 177e00000
499: 177e00000
500: 177e00000
501: 177e00000
502: 177e00000
503: 177e00000
504: 127020000
505: 107c00001
506: 177e00000
507: 177e00000
508: 177e00000
509: 177e00000
510: 177e00000
511: 177e00000
512: 177e00000
513: 177e00000
514: 177e00000
515: 177e00000
516: 177e00000
517: 177e00000
518: 177e00000
519: 177e00000
520: 11fc00000
521: 11fc00000
522: 177e00000
523: 177e00000
524: 177e00000
525: 1c3040000
526: 177e00000
527: 177e00000
528: 177e00000
529: 177e00000
530: 177e00000
531: 177e00000
532: 177e00000
533: 177e00000
534: 177e00000
535: 177e00000
536: 127020000
537: 107c00001
538: 177e00000
539: 177e00000
540: 177e00000
541: 177e00000
542: 177e00000
543: 177e00000
*******KERNEl*********
0: 177e00000
1: 177e00000
2: 177e00000
3: 177e00000
4: 177e00000
5: 177e00000
6: 177e00000
7: 177e00000
8: 11fc00000
9: 11fc00000
10: 177e00000
11: 177e00000
12: 177e00000
13: 1c3040000
14: 177e00000
15: 177e00000
16: 177e00000
17: 177e00000
18: 177e00000
19: 177e00000
20: 177e00000
21: 177e00000
22: 177e00000
23: 177e00000
24: 127020000
25: 107c00001
26: 177e00000
27: 177e00000
28: 177e00000
29: 177e00000
30: 177e00000
31: 177e00000
*******EPILOG*********
0: 177e00000
1: 177e00000
2: 177e00000
3: 177e00000
4: 177e00000
5: 177e00000
6: 177e00000
7: 177e00000
8: 177e00000
9: 177e00000
10: 177e00000
11: 177e00000
12: 177e00000
13: 1c3040000
14: 177e00000
15: 177e00000
16: 177e00000
17: 177e00000
18: 177e00000
19: 177e00000
20: 177e00000
21: 177e00000
22: 177e00000
23: 177e00000
24: 107c01000
25: 177e00000
26: 168c02004
27: 177e00000
28: 177e00000
29: 177e00000
30: 177e00000
31: 177e00000

View File

@ -1,41 +0,0 @@
Mapping has started
Operating mode:3
Starting II: 2 rec_MII: 2
node_set size: 5
Node: 2
Node: 2 type:2 ASAP: 1 ALAP:2 random try_time: 1
Node: 1
Node: 1 type:29 ASAP: 0 ALAP:0 random try_time: 0
Node: 4
Node: 4 type:10 ASAP: 2 ALAP:3 random try_time: 2
Node: 3
Node: 3 type:0 ASAP: 1 ALAP:1 random try_time: 1
Node: 0
Node: 0 type:29 ASAP: 0 ALAP:0 random try_time: 0
Feasible II is 2 Schedule Len is 4
Node: 0 ASAP: 0 ALAP: 0 is init: 1 sched @ 0 mod: 0
Node: 1 ASAP: 0 ALAP: 0 is init: 1 sched @ 0 mod: 0
Node: 2 ASAP: 1 ALAP: 2 is init: 1 sched @ 1 mod: 1
Node: 3 ASAP: 1 ALAP: 1 is init: 1 sched @ 1 mod: 1
Node: 4 ASAP: 2 ALAP: 3 is init: 1 sched @ 2 mod: 0
Left Nodes Are: 0
Left Nodes Are: 1
Left Nodes Are: 2
K : 1
distance: 1
adding nodes between: 2-->1
Left Nodes Are: 3
K : 1
distance: 1
adding nodes between: 3-->0
Successfully inserted routing nodes to the scheduled DFG.
attempt=0
rec_MII=0 resMII=1 II:2
Start Placement for II = 2
MII = 2 Current II=2
Mapping is completed and successfull

View File

@ -1,17 +0,0 @@
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
4
-1
-1
16

View File

@ -1,10 +0,0 @@
0 29 1
1 29 1
2 2 1
3 0 1
4 10 1
5 30 1
8 30 1
11 30 1
14 30 1
15 30 1

View File

@ -1,10 +0,0 @@
2011168768
2011168768
2
2
18
7
1
678624
678888
681200

View File

@ -1,20 +0,0 @@
digraph iso_graph {
{
0 [color=red ];
1 [color=red ];
2 [color=red ];
3 [color=red ];
4 [color=red ];
3 -> 0 [style=bold, color=red, label=1]
2 -> 1 [style=bold, color=red, label=1]
1 -> 2
0 -> 3
3 -> 4
}
}

View File

@ -1,33 +0,0 @@
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
1 0 0
0 0 0
-1 0 0
-1 0 0
-1 0 0
4 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
2 0 1
3 0 1
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
32

View File

@ -1,12 +0,0 @@
106 107 0 LRE 0
107 0 0 TRU 1
5 106 0 TRU 0
109 110 0 LRE 0
110 1 0 TRU 1
8 109 0 TRU 0
112 113 0 LRE 0
113 2 0 TRU 1
11 112 0 TRU 0
116 117 0 LRE 0
117 4 0 TRU 1
15 116 0 TRU 0

View File

@ -1,16 +0,0 @@
0 29 0 1
5 30 gVar1 1
106 19 ld_add_gVar1 1
107 20 ld_data_gVar1 1
1 29 1 1
8 30 gVar2 1
109 19 ld_add_gVar2 1
110 20 ld_data_gVar2 1
2 2 2 1
11 30 gVar3 1
112 19 ld_add_gVar3 1
113 20 ld_data_gVar3 1
4 10 4 1
15 30 gVar4 1
116 19 ld_add_gVar4 1
117 20 ld_data_gVar4 1

View File

@ -1,3 +0,0 @@
119 120 0 SRE 0
2 120 0 TRU 0
118 120 0 TRU 1

View File

@ -1,4 +0,0 @@
2 2 2 0 1
118 30 gVar5 0 1
119 21 st_add_gVar5 4 1
120 22 st_data_gVar5 0 1

View File

@ -1,10 +0,0 @@
3 0 1 TRU 0
5 0 0 LIE 1
2 1 1 TRU 0
8 1 0 LIE 1
1 2 0 TRU 0
11 2 0 LIE 1
0 3 0 TRU 0
14 3 0 TRU 1
3 4 0 TRU 0
15 4 0 LIE 1

View File

@ -1,10 +0,0 @@
0 29 0 0 1
1 29 1 0 1
2 2 2 0 1
3 0 3 0 1
4 10 4 0 1
5 30 gVar1 4 1
8 30 gVar2 4 1
11 30 gVar3 4 1
14 30 ConstInt1 0 1
15 30 gVar4 4 1

View File

@ -1,38 +0,0 @@
digraph loop_21 {
{
0 [shape=box, color=red, label="0\nPHI"];
1 [shape=box, color=red, label="1\nPHI"];
2 [shape=house, color=purple, label="2\nMultiply"];
3 [shape=polygon, color=purple, label="3\nAdd"];
4 [shape=trapezium, color=orange, label="4\nCMPEQ"];
5 [color=black, label="gVar1\n"];
8 [color=black, label="gVar2\n"];
11 [color=black, label="gVar3\n"];
14 [color=black, label="ConstInt1\n"];
15 [color=black, label="gVar4\n"];
118 [color=black, label="gVar5\n"];
3 -> 0 [style=bold, color=red, label=1]
5 -> 0 [color=orange, label=4]
2 -> 1 [style=bold, color=red, label=1]
8 -> 1 [color=orange, label=4]
1 -> 2
11 -> 2 [color=orange, label=4]
0 -> 3
14 -> 3 [color=gray]
3 -> 4
15 -> 4 [color=orange, label=4]
2 -> 118 [color=orange, label=4]
}
}

View File

@ -1,5 +0,0 @@
0 1
1 1
2 1
3 1
4 1

View File

@ -1,65 +0,0 @@
-1
-1
-1
-1
-1
-1
-1
-1
1
0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
2
3
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1
0
-1
-1
-1
4
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
2
3
-1
-1
-1
-1
-1
-1
64

View File

@ -1,16 +0,0 @@
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 0

View File

@ -1,112 +0,0 @@
#!/bin/bash
############################################
############################################
## Author : Shail Dave ##
## Arizona State University ##
## ##
## Notes : Script File To Compile A Loop ##
## for its Execution on CGRA ##
## ##
############################################
############################################
#Set Architecture Parameters
#X=4
#Y=4
#R=4
X=0
Y=0
R=0
IC=0
CGRAclock=0
CPUClock=0
ALGO=""
MSA=10
MAPII=10
MAX_MAP=1000
MAX_II=50
LAMBDA=0.02
if [ -f "CGRA_config.csv" ]; then
INPUTFILE="CGRA_config.csv"
X=$(grep -w X $INPUTFILE | cut -d, -f2)
Y=$(grep -w Y $INPUTFILE | cut -d, -f2)
R=$(grep -w R $INPUTFILE | cut -d, -f2)
ALGO=$(grep -w ALGO $INPUTFILE | cut -d, -f2)
MSA=$(grep -w MSA $INPUTFILE | cut -d, -f2)
MAPII=$(grep -w MAPII $INPUTFILE | cut -d, -f2)
MAX_MAP=$(grep -w MAX_MAP $INPUTFILE | cut -d, -f2)
MAX_II=$(grep -w MAX_II $INPUTFILE | cut -d, -f2)
LAMBDA=$(grep -w LAMBDA $INPUTFILE | cut -d, -f2)
else
echo "Please include CGRA architecture file"
exit 1
fi
obj="$1"
#Setting Paths
LEVEL=../..
#toolchain="/home/shail/ccf-init"
ccf_root="$2"
script="$ccf_root/scripts"
opcodegen="$ccf_root/InstructionGenerator/insgen"
opcodegen1="$ccf_root/InstructionGenerator/falcon_insgen"
#Detect node and edge file
llvmedge="$(find . -name "*.txt" | grep -i loop | grep -i edge)"
llvmnode="$(find . -name "*.txt" | grep -i loop | grep -i node)"
echo $llvmnode
#RAMP - Scheduling and Mapping
#if [ $ALGO -eq 0 ]; then
# $script/map.sh $llvmnode $llvmedge -X $X -Y $Y -R $R
#elif [ $ALGO -eq 1 ]; then
# $script/map1.sh $llvmnode $llvmedge $X $Y $R $MODE
#elif [ $ALGO -eq 2 ]; then
# $script/map2.sh $llvmnode $llvmedge $X $Y $R $MODE
#elif [ $ALGO -eq 3 ]; then
# $script/map3.sh $llvmnode $llvmedge $X $Y $R $MODE
#else
# $script/map4.sh $llvmnode $llvmedge $X $Y $R $MODE $SCHED
#fi
pwd
find ${ccf_root}/mappings -maxdepth 1 -mindepth 1 -type d | while read dir; do
if [[ $dir == *"$ALGO" ]]; then
map="$dir/Release"
nodefile="$dir/DFGFiles"
$map/$ALGO -EDGE $llvmedge -NODE $llvmnode -X $X -Y $Y -R $R -MSA $MSA -MAPII $MAPII -MAX_MAP $MAX_MAP -MAX_II $MAX_II -LAMBDA $LAMBDA #> $schfile
$nodefile/nodefile $llvmnode DUMP_node.txt > final_node.txt
fi
done
finalnode="$(find ./ -name "*.txt" | grep -i final | grep -i node)"
node="$(find ./ -name "*.txt" | grep -i DUMP | grep -i node)"
edge="$(find ./ -name "*.txt" | grep -i DUMP | grep -i edge)"
liveoutnode="$(find ./ -name "*.txt" | grep -i liveout | grep -i node)"
liveoutedge="$(find ./ -name "*.txt" | grep -i liveout | grep -i edge)"
if [ $R -eq 0 ]; then
R=4
fi
#echo "Num regs is $R"
#Instruction Generator
echo Instruction Generator
if [ $ALGO == "FalconCrimson" ]; then
echo running FalcomCrimson
$opcodegen1 $finalnode $edge $llvmnode $llvmedge $obj prolog.sch kernel.sch epilog.sch $X $Y $R $liveoutnode $liveoutedge > cgra_instructions.txt
else
echo Running something else
#$opcodegen $finalnode $edge $llvmnode $llvmedge $obj prolog.sch kernel.sch epilog.sch $X $Y $R $liveoutnode $liveoutedge > cgra_instructions.txt
$opcodegen $finalnode $edge $llvmnode $llvmedge $obj prolog.sch kernel.sch epilog.sch $X $Y $R $liveoutnode $liveoutedge &> cgra_instructions.debug
fi

View File

@ -1,42 +0,0 @@
digraph schedule {
{
0 [color=red ];
1 [color=red ];
2 [color=red ];
3 [color=red ];
4 [color=red ];
3 -> 0 [style=bold, color=red, label=1]
2 -> 1 [style=bold, color=red, label=1]
1 -> 2
0 -> 3
3 -> 4
}
{
node [shape=plaintext];
T0 -> T1 -> T2 -> T3 -> T4;
}{ rank = source;
T0;
};
{ rank = same;
0; 1; T0;
};
{ rank = same;
2; 3; T1;
};
{ rank = same;
4; T2;
};
{ rank = same;
};
{ rank = same;
};
}

View File

@ -1,42 +0,0 @@
digraph schedule {
{
0 [color=red ];
1 [color=red ];
2 [color=red ];
3 [color=red ];
4 [color=red ];
3 -> 0 [style=bold, color=red, label=1]
2 -> 1 [style=bold, color=red, label=1]
1 -> 2
0 -> 3
3 -> 4
}
{
node [shape=plaintext];
T0 -> T1 -> T2 -> T3 -> T4;
}{ rank = source;
T0;
};
{ rank = same;
0; 1; T0;
};
{ rank = same;
2; 3; T1;
};
{ rank = same;
4; T2;
};
{ rank = same;
};
{ rank = same;
};
}

View File

@ -1,14 +0,0 @@
X,4
Y,4
R,4
IC,0
Cclock,0.7
CPUclock,2
Mem,8GB
MODE,0
ALGO,FalconCrimson
MSA,10
MAPII,10
MAX_MAP,1000
MAX_II,50
LAMBDA,0.02
1 X 4
2 Y 4
3 R 4
4 IC 0
5 Cclock 0.7
6 CPUclock 2
7 Mem 8GB
8 MODE 0
9 ALGO FalconCrimson
10 MSA 10
11 MAPII 10
12 MAX_MAP 1000
13 MAX_II 50
14 LAMBDA 0.02

View File

@ -1,14 +0,0 @@
4
4
4
0
0.7
2
8GB
0
FalconCrimson
10
10
1000
50
0.02

View File

@ -1,5 +0,0 @@
3 0 1 TRU 0
2 1 1 TRU 0
1 2 0 TRU 0
0 3 0 TRU 0
3 4 0 TRU 0

View File

@ -1,5 +0,0 @@
0 29 1
1 29 1
2 4 1
3 0 1
4 10 1

View File

@ -1,33 +0,0 @@
digraph Success_MS_ {
{
0 [color=red ];
1 [color=red ];
2 [color=red ];
3 [color=red ];
4 [color=red ];
3 -> 0 [style=bold, color=red, label=1]
2 -> 1 [style=bold, color=red, label=1]
1 -> 2
0 -> 3
3 -> 4
}
{
node [shape=plaintext];
T0 -> T1;
}{ rank = same;
0; 1; 4; T0;
};
{ rank = same;
2; 3; T1;
};
{ rank = same;
};
}

View File

@ -1,504 +0,0 @@
UPDATING EDGES 3:0
UPDATING DEPENDENCY EDGES FOR NODE 0:1
UPDATING EDGES 2:1
UPDATING DEPENDENCY EDGES FOR NODE 1:1
UPDATING EDGES 1:2
UPDATING EDGES 0:3
UPDATING EDGES 3:4
UPDATING EDGES 5:0
UPDATING EDGES 6:1
UPDATING EDGES 5:2
UPDATING EDGES 5:3
UPDATING EDGES 7:4
UPDATING EDGES 111:112
UPDATING EDGES 2:112
UPDATING EDGES 110:112
file ptr:0 open:1 prolog_size:64
64
32
16
*********KERNEL*****************
*********EPILOG*****************
LiveOut_data_pe: 8 liveOut_data: 2
LiveOut_add_pe: 10 liveOut_add: 111
PE: 0 Configuration Boundary: 0 10e004000
PE: 1 Configuration Boundary: 0 10e004000
PE: 2 Configuration Boundary: 0 10e004000
PE: 3 Configuration Boundary: 0 10e004000
PE: 4 Configuration Boundary: 0 10e004000
PE: 5 Configuration Boundary: 0 10e004000
PE: 6 Configuration Boundary: 0 10e004000
PE: 7 Configuration Boundary: 0 10e004000
PE: 8 Configuration Boundary: 0 10e004000
PE: 9 Configuration Boundary: 0 10e004000
PE: 10 Configuration Boundary: 0 10e004000
PE: 11 Configuration Boundary: 0 10e004000
PE: 12 Configuration Boundary: 0 10e004000
PE: 13 Configuration Boundary: 0 10e004000
PE: 14 Configuration Boundary: 0 10e004000
PE: 15 Configuration Boundary: 0 10e004000
reg_num: 0
Generating Instructions To Store Address (Hex) 9a648
gVar6
Loading dynamic constant value. LDA and LDD are 168c02004: 105c04000 in pe 13
Load Dyn Cons 168c02004 105c04000
reg_num: 0
reg_num: 0
reg_num: 1
reg_num: 1
reg_num: 1
reg_num: 0
Large Constant (Hex): 1 Constant (Decimal): 1
reg_num: 1
Large Constant (Hex): 2 Constant (Decimal): 2
reg_num: 2
Generating Instructions To Store Address (Hex) 9a648
gVar6
Loading dynamic constant value. LDA and LDD are 168d02004: 105c14000 in pe 13
Load Dyn Cons 168d02004 105c14000
reg_num: 2
Generating Instructions To Store Address (Hex) 9a654
gVar7
reg_num: 0
Variable Address (Hex): 9a654 Node: 111 PE: 10 Address (Decimal): 632404 RegNum: 0
reg_num: 2
pe mem op
0 6
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 6
9 9
10 3
11 0
12 0
13 13
14 0
15 0
****** Generatina Instructions For Non-Phi Nodes *****
NODES SCHEDULED AT 0
4
FOR NODE 4: Datatype:1 opcode:12 lmux:3 rmux:0 reg1:0 reg2:2 we:0 wreg:0 imm:0 ab:0 db:0
Decoded 1c3040000
NODES SCHEDULED AT 1
2 3
FOR NODE 2: Datatype:1 opcode:8 lmux:7 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:1 ab:0 db:0
Decoded 187c00001
FOR NODE 3: Datatype:1 opcode:0 lmux:7 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:1 ab:0 db:0
Decoded 107c00001
****** Generating Instructions For Phi Nodes *****
NODES SCHEDULED AT 0
0 1
Phi Instructions
Phi! Prolog! FOR NODE 0: Datatype:1 opcode:1 lmux:6 rmux:0 reg1:0 reg2:0 we:0 wreg:0 imm:1 ab:0 db:0
Decoded 11e000001
Phi! Prolog! FOR NODE 1: Datatype:1 opcode:1 lmux:6 rmux:0 reg1:0 reg2:0 we:0 wreg:0 imm:2 ab:0 db:0
Decoded 11e000002
Kernel Instructions
FOR NODE 0: Datatype:1 opcode:1 lmux:7 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:0 ab:0 db:0
Decoded 11fc00000
FOR NODE 1: Datatype:1 opcode:1 lmux:7 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:0 ab:0 db:0
Decoded 11fc00000
****** Generating Instructions For Store Nodes For Live Variables*****
NODES SCHEDULED AT 2
NODES SCHEDULED AT STORE CYCLE 0
111 112
FOR NODE 111: Datatype:1 opcode:6 lmux:0 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:4 ab:1 db:0
Decoded 168c02004
FOR NODE 112: Datatype:1 opcode:0 lmux:7 rmux:6 reg1:0 reg2:0 we:0 wreg:0 imm:0 ab:0 db:1
Decoded 107c01000
*******PROLOG*********
0: 10e004000
1: 10e004000
2: 10e004000
3: 10e004000
4: 10e004000
5: 10e004000
6: 10e004000
7: 10e004000
8: 10e004000
9: 10e004000
10: 10e004000
11: 10e004000
12: 10e004000
13: 10e004000
14: 10e004000
15: 10e004000
16: 11e004001
17: 177e00000
18: 177e00000
19: 177e00000
20: 177e00000
21: 177e00000
22: 177e00000
23: 177e00000
24: 177e00000
25: 11e014654
26: 11e004654
27: 177e00000
28: 177e00000
29: 11e004648
30: 177e00000
31: 177e00000
32: 12e004000
33: 177e00000
34: 177e00000
35: 177e00000
36: 177e00000
37: 177e00000
38: 177e00000
39: 177e00000
40: 177e00000
41: 12e01409a
42: 12e00409a
43: 177e00000
44: 177e00000
45: 12e00409a
46: 177e00000
47: 177e00000
48: 13e004000
49: 177e00000
50: 177e00000
51: 177e00000
52: 177e00000
53: 177e00000
54: 177e00000
55: 177e00000
56: 177e00000
57: 13e014000
58: 13e004000
59: 177e00000
60: 177e00000
61: 13e004000
62: 177e00000
63: 177e00000
64: 11e00c002
65: 177e00000
66: 177e00000
67: 177e00000
68: 177e00000
69: 177e00000
70: 177e00000
71: 177e00000
72: 177e00000
73: 177e00000
74: 177e00000
75: 177e00000
76: 177e00000
77: 168c02004
78: 177e00000
79: 177e00000
80: 12e00c000
81: 177e00000
82: 177e00000
83: 177e00000
84: 177e00000
85: 177e00000
86: 177e00000
87: 177e00000
88: 177e00000
89: 177e00000
90: 177e00000
91: 177e00000
92: 177e00000
93: 105c04000
94: 177e00000
95: 177e00000
96: 13e00c000
97: 177e00000
98: 177e00000
99: 177e00000
100: 177e00000
101: 177e00000
102: 177e00000
103: 177e00000
104: 177e00000
105: 177e00000
106: 177e00000
107: 177e00000
108: 177e00000
109: 11e014648
110: 177e00000
111: 177e00000
112: 177e00000
113: 177e00000
114: 177e00000
115: 177e00000
116: 177e00000
117: 177e00000
118: 177e00000
119: 177e00000
120: 177e00000
121: 177e00000
122: 177e00000
123: 177e00000
124: 177e00000
125: 12e01409a
126: 177e00000
127: 177e00000
128: 177e00000
129: 177e00000
130: 177e00000
131: 177e00000
132: 177e00000
133: 177e00000
134: 177e00000
135: 177e00000
136: 177e00000
137: 177e00000
138: 177e00000
139: 177e00000
140: 177e00000
141: 13e014000
142: 177e00000
143: 177e00000
144: 177e00000
145: 177e00000
146: 177e00000
147: 177e00000
148: 177e00000
149: 177e00000
150: 177e00000
151: 177e00000
152: 177e00000
153: 177e00000
154: 177e00000
155: 177e00000
156: 177e00000
157: 168d02004
158: 177e00000
159: 177e00000
160: 177e00000
161: 177e00000
162: 177e00000
163: 177e00000
164: 177e00000
165: 177e00000
166: 177e00000
167: 177e00000
168: 177e00000
169: 177e00000
170: 177e00000
171: 177e00000
172: 177e00000
173: 105c14000
174: 177e00000
175: 177e00000
176: 177e00000
177: 177e00000
178: 177e00000
179: 177e00000
180: 177e00000
181: 177e00000
182: 177e00000
183: 177e00000
184: 177e00000
185: 177e00000
186: 177e00000
187: 177e00000
188: 177e00000
189: 177e00000
190: 177e00000
191: 177e00000
192: 177e00000
193: 177e00000
194: 177e00000
195: 177e00000
196: 177e00000
197: 177e00000
198: 177e00000
199: 177e00000
200: 177e00000
201: 177e00000
202: 177e00000
203: 177e00000
204: 177e00000
205: 177e00000
206: 177e00000
207: 177e00000
208: 177e00000
209: 177e00000
210: 177e00000
211: 177e00000
212: 177e00000
213: 177e00000
214: 177e00000
215: 177e00000
216: 177e00000
217: 177e00000
218: 177e00000
219: 177e00000
220: 177e00000
221: 177e00000
222: 177e00000
223: 177e00000
224: 177e00000
225: 177e00000
226: 177e00000
227: 177e00000
228: 177e00000
229: 177e00000
230: 177e00000
231: 177e00000
232: 11e000002
233: 11e000001
234: 177e00000
235: 177e00000
236: 177e00000
237: 177e00000
238: 177e00000
239: 177e00000
240: 177e00000
241: 177e00000
242: 177e00000
243: 177e00000
244: 177e00000
245: 177e00000
246: 177e00000
247: 177e00000
248: 187c00001
249: 107c00001
250: 177e00000
251: 177e00000
252: 177e00000
253: 177e00000
254: 177e00000
255: 177e00000
256: 177e00000
257: 177e00000
258: 177e00000
259: 177e00000
260: 177e00000
261: 177e00000
262: 177e00000
263: 177e00000
264: 11fc00000
265: 11fc00000
266: 177e00000
267: 177e00000
268: 177e00000
269: 1c3040000
270: 177e00000
271: 177e00000
272: 177e00000
273: 177e00000
274: 177e00000
275: 177e00000
276: 177e00000
277: 177e00000
278: 177e00000
279: 177e00000
280: 187c00001
281: 107c00001
282: 177e00000
283: 177e00000
284: 177e00000
285: 177e00000
286: 177e00000
287: 177e00000
*******KERNEl*********
0: 177e00000
1: 177e00000
2: 177e00000
3: 177e00000
4: 177e00000
5: 177e00000
6: 177e00000
7: 177e00000
8: 11fc00000
9: 11fc00000
10: 177e00000
11: 177e00000
12: 177e00000
13: 1c3040000
14: 177e00000
15: 177e00000
16: 177e00000
17: 177e00000
18: 177e00000
19: 177e00000
20: 177e00000
21: 177e00000
22: 177e00000
23: 177e00000
24: 187c00001
25: 107c00001
26: 177e00000
27: 177e00000
28: 177e00000
29: 177e00000
30: 177e00000
31: 177e00000
*******EPILOG*********
0: 177e00000
1: 177e00000
2: 177e00000
3: 177e00000
4: 177e00000
5: 177e00000
6: 177e00000
7: 177e00000
8: 177e00000
9: 177e00000
10: 177e00000
11: 177e00000
12: 177e00000
13: 1c3040000
14: 177e00000
15: 177e00000
16: 177e00000
17: 177e00000
18: 177e00000
19: 177e00000
20: 177e00000
21: 177e00000
22: 177e00000
23: 177e00000
24: 107c01000
25: 177e00000
26: 168c02004
27: 177e00000
28: 177e00000
29: 177e00000
30: 177e00000
31: 177e00000

View File

@ -1,41 +0,0 @@
Mapping has started
Operating mode:3
Starting II: 2 rec_MII: 2
node_set size: 5
Node: 2
Node: 2 type:4 ASAP: 1 ALAP:2 random try_time: 1
Node: 1
Node: 1 type:29 ASAP: 0 ALAP:0 random try_time: 0
Node: 4
Node: 4 type:10 ASAP: 2 ALAP:3 random try_time: 2
Node: 3
Node: 3 type:0 ASAP: 1 ALAP:1 random try_time: 1
Node: 0
Node: 0 type:29 ASAP: 0 ALAP:0 random try_time: 0
Feasible II is 2 Schedule Len is 4
Node: 0 ASAP: 0 ALAP: 0 is init: 1 sched @ 0 mod: 0
Node: 1 ASAP: 0 ALAP: 0 is init: 1 sched @ 0 mod: 0
Node: 2 ASAP: 1 ALAP: 2 is init: 1 sched @ 1 mod: 1
Node: 3 ASAP: 1 ALAP: 1 is init: 1 sched @ 1 mod: 1
Node: 4 ASAP: 2 ALAP: 3 is init: 1 sched @ 2 mod: 0
Left Nodes Are: 0
Left Nodes Are: 1
Left Nodes Are: 2
K : 1
distance: 1
adding nodes between: 2-->1
Left Nodes Are: 3
K : 1
distance: 1
adding nodes between: 3-->0
Successfully inserted routing nodes to the scheduled DFG.
attempt=0
rec_MII=0 resMII=1 II:2
Start Placement for II = 2
MII = 2 Current II=2
Mapping is completed and successfull

View File

@ -1,17 +0,0 @@
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
4
-1
-1
16

View File

@ -1,8 +0,0 @@
0 29 1
1 29 1
2 4 1
3 0 1
4 10 1
5 30 1
6 30 1
7 30 1

View File

@ -1,20 +0,0 @@
digraph iso_graph {
{
0 [color=red ];
1 [color=red ];
2 [color=red ];
3 [color=red ];
4 [color=red ];
3 -> 0 [style=bold, color=red, label=1]
2 -> 1 [style=bold, color=red, label=1]
1 -> 2
0 -> 3
3 -> 4
}
}

View File

@ -1,33 +0,0 @@
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
1 0 0
0 0 0
-1 0 0
-1 0 0
-1 0 0
4 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
2 0 1
3 0 1
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
-1 0 0
32

View File

@ -1,3 +0,0 @@
108 109 0 LRE 0
109 4 0 TRU 1
7 108 0 TRU 0

View File

@ -1,4 +0,0 @@
4 10 4 1
7 30 gVar6 1
108 19 ld_add_gVar6 1
109 20 ld_data_gVar6 1

View File

@ -1,3 +0,0 @@
111 112 0 SRE 0
2 112 0 TRU 0
110 112 0 TRU 1

View File

@ -1,4 +0,0 @@
2 4 2 0 1
110 30 gVar7 0 1
111 21 st_add_gVar7 4 1
112 22 st_data_gVar7 0 1

View File

@ -1,10 +0,0 @@
3 0 1 TRU 0
5 0 0 TRU 1
2 1 1 TRU 0
6 1 0 TRU 1
1 2 0 TRU 0
5 2 0 TRU 1
0 3 0 TRU 0
5 3 0 TRU 1
3 4 0 TRU 0
7 4 0 LIE 1

Some files were not shown because too many files have changed in this diff Show More