aboutsummaryrefslogtreecommitdiff
path: root/fib_ltI.ll
blob: 3c26df75cc9f2912d273e5f386c2fdca82197709 (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 [100000000 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
}