Moved *.c files into subdirectory TestSources to avoid overwriting
[oota-llvm.git] / test / fib2.ll
1 %__intern_LC0 = constant [sbyte] c"fib returned: \00"
2 %__intern_LC1 = constant [sbyte] c"\0A\00"
3
4 implementation
5
6 declare void "__main"()
7
8 declare int "atoi"(sbyte *)
9
10 declare void "printVal"([sbyte] *)
11 declare void "printVal"(uint)
12
13 int "main"(int %argc, sbyte * * %argv)
14 begin
15 bb1:                                    ;[#uses=1]
16         call void () * %__main( )
17         %cond1003 = setne int %argc, 2          ; <bool>        [#uses=1]
18         br bool %cond1003, label %bb4, label %bb2
19
20 bb2:                                    ;[#uses=2]
21         %cast1006 = cast ulong 8 to sbyte * *           ; <sbyte * *>   [#uses=1]
22         %reg1004 = add sbyte * * %argv, %cast1006               ; <sbyte * *>   [#uses=1]
23         %reg110 = load sbyte * * %reg1004               ; <sbyte *>     [#uses=1]
24         %reg109 = call int (sbyte *) * %atoi( sbyte * %reg110 )         ; <int> [#uses=1]
25         br label %bb4
26
27 bb4:                                    ;[#uses=3]
28         %reg126 = phi int [ %reg109, %bb2 ], [ 15, %bb1 ]               ; <int> [#uses=3]
29         %cast1007 = cast int %reg126 to uint            ; <uint>        [#uses=1]
30         %cond1005 = setgt uint %cast1007, 1             ; <bool>        [#uses=1]
31         br bool %cond1005, label %bb6, label %bb7
32
33 bb6:                                    ;[#uses=2]
34         %reg115 = add int %reg126, -2           ; <int> [#uses=1]
35         %cast1008 = cast int %reg115 to uint            ; <uint>        [#uses=1]
36         %reg116 = call uint (uint) * %fib( uint %cast1008 )             ; <uint>        [#uses=1]
37         %reg118 = add int %reg126, -1           ; <int> [#uses=1]
38         %cast1009 = cast int %reg118 to uint            ; <uint>        [#uses=1]
39         %reg119 = call uint (uint) * %fib( uint %cast1009 )             ; <uint>        [#uses=1]
40         %reg127 = add uint %reg116, %reg119             ; <uint>        [#uses=1]
41         br label %bb7
42
43 bb7:                                    ;[#uses=2]
44         %reg128 = phi uint [ %reg127, %bb6 ], [ 1, %bb4 ]               ; <uint>        [#uses=1]
45         call void %printVal([sbyte] * %__intern_LC0)
46         call void %printVal(uint %reg128 )
47         call void %printVal([sbyte] * %__intern_LC1)
48         ret int 0
49 end
50
51 uint "fib"(uint %n)
52 begin
53 bb1:                                    ;[#uses=0]
54         %cond1000 = setgt uint %n, 1            ; <bool>        [#uses=1]
55         br bool %cond1000, label %bb3, label %bb2
56
57 bb2:                                    ;[#uses=1]
58         ret uint 1
59
60 bb3:                                    ;[#uses=1]
61         %cast1001 = cast long -2 to uint                ; <uint>        [#uses=1]
62         %reg112 = add uint %n, %cast1001                ; <uint>        [#uses=1]
63         %reg113 = call uint (uint) * %fib( uint %reg112 )               ; <uint>        [#uses=1]
64         %cast1002 = cast long -1 to uint                ; <uint>        [#uses=1]
65         %reg115 = add uint %n, %cast1002                ; <uint>        [#uses=1]
66         %reg116 = call uint (uint) * %fib( uint %reg115 )               ; <uint>        [#uses=1]
67         %reg110 = add uint %reg113, %reg116             ; <uint>        [#uses=1]
68         ret uint %reg110
69 end