aboutsummaryrefslogtreecommitdiff
path: root/fib_ltI.ll
blob: 65598fd8424db445affe4d7beb39781c7e9a7edd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
define private i64 @s1(i64 %arg, i64** %globasp) {
	%astack = alloca i64*, i64 10000
	%asp.000 = getelementptr i64*, i64** %astack
	%bstack = alloca i64, i64 10000
	%bsp.000 = getelementptr i64, i64* %bstack, i64 9999

	%bsp.001 = call i64* @pushI(i64 %arg, i64* %bsp.000)

	%bsp.100 = call i64* @pushI(i64 2, i64* %bsp.001)
	%bsp.101 = call i64* @push_b(i64 1, i64* %bsp.100)
	%bsp.102 = call i64* @ltI(i64* %bsp.101)

	%t.0 = call i64 @peek_b(i64* %bsp.102)
	%bsp.103 = call i64* @pop_b1(i64* %bsp.102)
	%t.1 = trunc i64 %t.0 to i1
	br i1 %t.1, label %l.0, label %else.1

l.0:
	%bsp.200 = call i64* @pop_b1(i64* %bsp.103)
	%bsp.201 = call i64* @pushI(i64 1, i64* %bsp.200)

	%r = call i64 @peek_b(i64* %bsp.201)
	%bsp.202 = call i64* @pop_b1(i64* %bsp.201)
	ret i64 %r

else.1:
	%bsp.300 = call i64* @pushI(i64 1, i64* %bsp.103)
	%bsp.301 = call i64* @push_b(i64 1, i64* %bsp.300)
	%bsp.302 = call i64* @subI(i64* %bsp.301)

	%arg.0 = call i64 @peek_b(i64* %bsp.302)
	%bsp.302.0 = call i64* @pop_b1(i64* %bsp.302)
	%r.0 = call i64 @s1(i64 %arg.0, i64** %globasp)
	%bsp.303 = call i64* @pushI(i64 %r.0, i64* %bsp.302.0)

	%bsp.304 = call i64* @pushI(i64 2, i64* %bsp.303)
	%bsp.305 = call i64* @push_b(i64 2, i64* %bsp.304)
	%bsp.306 = call i64* @subI(i64* %bsp.305)

	%arg.1 = call i64 @peek_b(i64* %bsp.306)
	%bsp.306.0 = call i64* @pop_b1(i64* %bsp.306)
	%r.1 = call i64 @s1(i64 %arg.1, i64** %globasp)
	%bsp.307 = call i64* @pushI(i64 %r.1, i64* %bsp.306.0)

	%bsp.308 = call i64* @update_b(i64 1, i64 2, i64* %bsp.307)
	%bsp.309 = call i64* @updatepop_b01(i64* %bsp.308)
	%bsp.310 = call i64* @addI(i64* %bsp.309)

	%relse = call i64 @peek_b(i64* %bsp.310)
	%bsp.311 = call i64* @pop_b1(i64* %bsp.310)
	ret i64 %relse
}

define private i64 @_s2(i64 %arg, i64** %globasp) {
	%ret = tail call i64 @s1(i64 %arg, i64** %globasp)
	ret i64 %ret
}

define i64 @main() {
	%heap = bitcast [10000 x i64]* @heap to i64*
	%astack = bitcast [10000 x i64*]* @astack to i64**

	%r = call i64 @_s2(i64 43, i64** %astack)

	call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @printf_d, i64 0, i64 0), i64 %r)
	call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @printf_c, i64 0, i64 0), i64 10)

	ret i64 0
}