Skip to content

Commit

Permalink
Update samples for loop
Browse files Browse the repository at this point in the history
  • Loading branch information
vbcpascal committed Jan 23, 2022
1 parent c9c0bb1 commit fedfd14
Show file tree
Hide file tree
Showing 15 changed files with 18,069 additions and 64 deletions.
27 changes: 13 additions & 14 deletions samples/3-addr/phi.txt
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
instr 1: nop
instr 2: entrypc
instr 3: enter 24
instr 4: cmpeq 1 1
instr 5: blbc (4) [8]
instr 6: move 1 x#-8
instr 7: br [4]
instr 8: move 2 a#-16
instr 9: cmple a#-16 0
instr 10: blbs (9) [13]
instr 11: move 4 a#-16
instr 12: br [14]
instr 13: move 4 a#-16
instr 14: move a#-16 b#-24
instr 15: write b#-24
instr 16: ret 0
instr 17: nop
instr 4: move 2 a#-8
instr 5: move 1 b#-16
instr 6: cmple a#-8 b#-16
instr 7: blbs (6) [14]
instr 8: mul 4 a#-8
instr 9: add (8) a#-8
instr 10: move (9) c#-24
instr 11: add b#-16 1
instr 12: move (11) b#-16
instr 13: br [6]
instr 14: write b#-16
instr 15: ret 0
instr 16: nop
16 changes: 6 additions & 10 deletions samples/c/phi.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,15 @@

void main()
{
long x, a, b;

while (1 == 1) {
x = 1;
}
long a, b, c;

a = 2;
if (a > 0) {
a = 4;
} else {
a = 4;
b = 1;

while (a > b) {
c = 4 * a + a;
b = b + 1;
}

b = a;
WriteLong(b);
}
204 changes: 204 additions & 0 deletions samples/loop/collatz.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
Report of collatz:
Function: 4
Number of statement hoisted: 39
18: add j_base#32752 GP
23: add j_base#32752 GP
29: add j_base#32752 GP
32: add j_base#32752 GP
36: add j_base#32752 GP
42: add j_base#32752 GP
45: add k_base#32736 GP
49: add k_base#32736 GP
53: add j_base#32752 GP
57: add j_base#32752 GP
60: add k_base#32736 GP
64: add k_base#32736 GP
8: add max_base#32728 GP
13: add k_base#32736 GP
15: store 0 (9)
17: add i_base#32760 GP
20: add j_base#32752 GP
23: add j_base#32752 GP
25: add j_base#32752 GP
27: add j_base#32752 GP
29: add j_base#32752 GP
31: add j_base#32752 GP
33: add j_base#32752 GP
35: add k_base#32736 GP
37: add k_base#32736 GP
39: add j_base#32752 GP
41: add j_base#32752 GP
43: add k_base#32736 GP
45: add k_base#32736 GP
85: add k_base#32736 GP
88: add max_base#32728 GP
93: add k_base#32736 GP
96: add max_base#32728 GP
99: add i_base#32760 GP
102: add maxi_base#32744 GP
105: add max_base#32728 GP
110: add maxi_base#32744 GP
115: add i_base#32760 GP
119: add i_base#32760 GP

(ENTRY) Function #0:
#parameters = 0
#local_vars = 0

(ENTRY) Block #0:
instr 4: add max_base#32728 GP
instr 5: store 0 (4)
instr 6: add i_base#32760 GP
instr 7: store 5 (6)

Block #1:
instr 8: add max_base#32728 GP
instr 9: add k_base#32736 GP
instr 10: store 0 (9)
instr 11: add i_base#32760 GP
instr 12: add j_base#32752 GP
instr 13: add j_base#32752 GP
instr 14: add j_base#32752 GP
instr 15: add j_base#32752 GP
instr 16: add j_base#32752 GP
instr 17: add j_base#32752 GP
instr 18: add j_base#32752 GP
instr 19: add k_base#32736 GP
instr 20: add k_base#32736 GP
instr 21: add j_base#32752 GP
instr 22: add j_base#32752 GP
instr 23: add k_base#32736 GP
instr 24: add k_base#32736 GP
instr 25: add k_base#32736 GP
instr 26: add max_base#32728 GP
instr 27: add k_base#32736 GP
instr 28: add max_base#32728 GP
instr 29: add i_base#32760 GP
instr 30: add maxi_base#32744 GP
instr 31: add max_base#32728 GP
instr 32: add maxi_base#32744 GP
instr 33: add i_base#32760 GP
instr 34: add i_base#32760 GP

Block #2:
instr 35: nop
instr 36: load (35)
instr 37: cmplt (36) 270
instr 38: blbc (37) [13]

Block #3:
instr 39: nop
instr 40: nop
instr 41: nop
instr 42: load (41)
instr 43: nop
instr 44: store (42) (34)

Block #4:
instr 45: nop
instr 46: nop
instr 47: nop
instr 48: nop
instr 49: nop
instr 50: nop
instr 51: nop
instr 52: nop
instr 53: nop
instr 54: nop
instr 55: nop
instr 56: nop

Block #5:
instr 57: nop
instr 58: load (57)
instr 59: cmpeq (58) 4
instr 60: blbs (59) [10]

Block #6:
instr 61: nop
instr 62: load (61)
instr 63: mod (62) 2
instr 64: cmpeq (63) 1
instr 65: blbc (64) [8]

Block #7:
instr 66: nop
instr 67: load (66)
instr 68: nop
instr 69: load (68)
instr 70: add (67) (69)
instr 71: nop
instr 72: load (71)
instr 73: add (70) (72)
instr 74: add (73) 1
instr 75: div (74) 2
instr 76: nop
instr 77: store (75) (34)
instr 78: nop
instr 79: load (78)
instr 80: add (79) 2
instr 81: nop
instr 82: store (80) (34)
instr 83: br [9]

Block #8:
instr 84: nop
instr 85: load (84)
instr 86: div (85) 2
instr 87: nop
instr 88: store (86) (34)
instr 89: nop
instr 90: load (89)
instr 91: add (90) 1
instr 92: nop
instr 93: store (91) (34)

Block #9:
instr 94: br [5]

Block #10:
instr 95: nop
instr 96: load (95)
instr 97: nop
instr 98: load (97)
instr 99: cmple (96) (98)
instr 100: blbs (99) [12]

Block #11:
instr 101: nop
instr 102: load (101)
instr 103: nop
instr 104: store (102) (34)
instr 105: nop
instr 106: load (105)
instr 107: nop
instr 108: store (106) (34)
instr 109: nop
instr 110: load (109)
instr 111: add (110) 2
instr 112: write (111)
instr 113: nop
instr 114: load (113)
instr 115: write (114)
instr 116: wrl

Block #12:
instr 117: nop
instr 118: load (117)
instr 119: add (118) 1
instr 120: nop
instr 121: store (119) (34)
instr 122: br [2]

Block #13:
instr 123: add max_base#32728 GP
instr 124: load (123)
instr 125: add (124) 2
instr 126: write (125)
instr 127: add maxi_base#32744 GP
instr 128: load (127)
instr 129: write (128)
instr 130: wrl
instr 131: ret


78 changes: 78 additions & 0 deletions samples/loop/gcd.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
Report of gcd:
Function: 3
Number of statement hoisted: 0

Function: 20
Number of statement hoisted: 0

Function #0:
#parameters = 2
#local_vars = 0

(ENTRY) Block #0:

Block #1:

Block #2:
instr 3: a$1 <- phi a$0 a$2 [0] [3]
instr 4: b$1 <- phi b$0 b$2 [0] [3]
instr 5: c$0 <- phi c$-1 c$1 [0] [3]
instr 6: cmpeq b$1 0
instr 7: blbs (6) [4]

Block #3:
instr 8: move a$1 c$1
instr 9: move b$1 a$2
instr 10: mod c$1 b$1
instr 11: move (10) b$2
instr 12: write c$1
instr 13: write a$2
instr 14: write b$2
instr 15: wrl
instr 16: br [2]

Block #4:
instr 17: add res_base#32744 GP
instr 18: store a$1 (17)
instr 19: ret


(ENTRY) Function #1:
#parameters = 0
#local_vars = 0

(ENTRY) Block #0:
instr 20: add a_base#32760 GP
instr 21: store 25733 (20)
instr 22: add b_base#32752 GP
instr 23: store 48611 (22)
instr 24: add a_base#32760 GP
instr 25: load (24)
instr 26: param (25)
instr 27: add b_base#32752 GP
instr 28: load (27)
instr 29: param (28)
instr 30: call [0]
instr 31: add res_base#32744 GP
instr 32: load (31)
instr 33: write (32)
instr 34: wrl
instr 35: wrl
instr 36: add a_base#32760 GP
instr 37: store 7485671 (36)
instr 38: add b_base#32752 GP
instr 39: store 7480189 (38)
instr 40: add a_base#32760 GP
instr 41: load (40)
instr 42: param (41)
instr 43: add b_base#32752 GP
instr 44: load (43)
instr 45: param (44)
instr 46: call [0]
instr 47: add res_base#32744 GP
instr 48: load (47)
instr 49: write (48)
instr 50: wrl
instr 51: ret


Loading

0 comments on commit fedfd14

Please sign in to comment.