index.html revision 1bb4c3837fcf384c0106191fc405160e74d7d679
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
2          "http://www.w3.org/TR/html4/strict.dtd">
3<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
4<html>
5<head>
6  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
7  <title>"compiler-rt" Runtime Library</title>
8  <link type="text/css" rel="stylesheet" href="menu.css">
9  <link type="text/css" rel="stylesheet" href="content.css">
10</head>
11
12<body>
13<!--#include virtual="menu.html.incl"-->
14<div id="content">
15  <!--*********************************************************************-->
16  <h1>"compiler-rt" Runtime Library</h1>
17  <!--*********************************************************************-->
18  
19  <p>The compiler-rt project is a simple library that provides an implementation
20     of the low-level target-specific hooks required by code generation and
21     other runtime components.  For example, when compiling for a 32-bit target,
22    converting a double to a 64-bit unsigned integer is compiling into a runtime
23    call to the "__fixunsdfdi" function.  The compiler-rt library provides
24    optimized implementations of this and other low-level routines.</p>
25
26  <p>All of the code in the compiler-rt project is available under the standard
27     <a href="http://llvm.org/docs/DeveloperPolicy.html#license">LLVM
28     License</a>, a "BSD-style" license.</p>
29  
30  <!--=====================================================================-->
31  <h2 id="goals">Goals</h2>
32  <!--=====================================================================-->
33  
34  <p>Different targets require different routines.  The compiler-rt project aims
35     to implement these routines in both target-independent C form as well as
36     providing heavily optimized assembly versions of the routines in some
37     cases.  It should be very easy to bring compiler-rt to support a new
38     target by adding the new routines needed by that target.</p>
39     
40  <p>Where it make sense, the compiler-rt project aims to implement interfaces
41     that are drop-in compatible with the libgcc interfaces.</p>
42
43  <!--=====================================================================-->
44  <h2 id="features">Features</h2>
45  <!--=====================================================================-->
46
47   <p>The current feature set of compiler-rt is:</p>
48
49   <ul>
50    <li>Full support for the libgcc interfaces on supported targets.</li>
51    <li>High performance hand tuned implementations of commonly used functions
52        like __floatundidf in assembly that are dramatically faster than the
53        libgcc implementations.</li>
54    <li>A target-independent implementation of the Apple "Blocks" runtime
55        interfaces.</li>
56   </ul>
57
58  <!--=====================================================================-->
59  <h2 id="requirements">Platform Support</h2>
60  <!--=====================================================================-->
61
62   <p>Compiler-RT is known to work on the following platforms:</p>
63
64   <li>Machine Architectures:
65    <ul>
66     <li>i386</li>
67     <li>X86-64</li>
68     <li>SPARC64</li>
69     <li>ARM</li>
70     <li>PowerPC</li>
71     <li>PowerPC 64</li>
72    </ul></li>
73
74   <table cellpadding="3" summary="Known Compiler-RT platforms">
75   <tr>
76     <th>OS</th>
77     <th>Arch</th>
78   </tr>
79   <tr>
80     <td>AuroraUX</td>
81     <td>All<sup>
82   </tr>
83   <tr>
84     <td>DragonFlyBSD</td>
85     <td>All<sup>
86   </tr>
87   <tr>
88     <td>FreeBSD</td>
89     <td>All<sup>
90   </tr>
91   <tr>
92     <td>NetBSD</td>
93     <td>All<sup>
94   </tr>
95   <tr>
96     <td>Linux</td>
97     <td>All<sup>
98   </tr>
99   <tr>
100     <td>Darwin</td>
101     <td>All<sup>
102   </tr>
103   </table>
104
105  <!--=====================================================================-->
106  <h2 id="dir-structure">Source Structure</h2>
107  <!--=====================================================================-->
108
109   <p>A short explanation of the directory structure of compiler-rt:</p>
110
111   <p>For testing it is possible to build a generic library and an optimized library.
112       The optimized library is formed by overlaying the optimized versions onto the generic library.
113       Of course, some architectures have additional functions,
114       so the optimized library may have functions not found in the generic version.</p>
115
116   <ul>   
117    <li> lib/ Is a generic portable implementations.</li>
118    <li> lib/(arch) has optimized version for the supported architectures.</li>
119   </ul>
120    
121  <!--=====================================================================-->
122  <h2>Get it and get involved!</h2>
123  <!--=====================================================================-->
124  
125  <p>To check out the code, use:</p>
126  
127  <ul>
128  <li>svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt</li>
129  <li>mkdir build</li>
130  <li>cd build</li>
131  <li>cmake /compiler-rt</li>
132  <li>make</li>
133  </ul>
134
135  <p>To run the Compiler-RT Test Suit (recommended):</p>
136
137  <ul>
138  <li>ctest</li>
139  </ul>
140
141  <p>To Install:</p>
142
143  <ul>
144  <li>make install</li>
145  </ul>
146  
147  <p>compiler-rt doesn't have its own mailing list, if you have questions please
148     email the <a
149    href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> mailing
150    list.  Commits to the compiler-rt SVN module are automatically sent to the
151    <a 
152  href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>
153    mailing list.</p>
154</div>
155</body>
156</html>
157