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