index.html revision f998156715cdf8ba5d07ab8c853d803a22867e77
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>
50ff5380f65f639f043680868c74927c15f7428499Chris Lattner    <li>Full support for the libgcc interfaces required by these targets:
51ff5380f65f639f043680868c74927c15f7428499Chris Lattner      <ul>
52ff5380f65f639f043680868c74927c15f7428499Chris Lattner      <li>Darwin i386</li>
53ff5380f65f639f043680868c74927c15f7428499Chris Lattner      <li>Darwin X86-64</li>
54ff5380f65f639f043680868c74927c15f7428499Chris Lattner      <li>Darwin PowerPC</li>
55ff5380f65f639f043680868c74927c15f7428499Chris Lattner      <li>Darwin PowerPC 64</li>
56ff5380f65f639f043680868c74927c15f7428499Chris Lattner      </ul></li>
57ff5380f65f639f043680868c74927c15f7428499Chris Lattner      
58ff5380f65f639f043680868c74927c15f7428499Chris Lattner    <li>High performance hand tuned implementations of commonly used functions
59ff5380f65f639f043680868c74927c15f7428499Chris Lattner        like __floatundidf in assembly that are dramatically faster than the
60ff5380f65f639f043680868c74927c15f7428499Chris Lattner        libgcc implementations.</li>
61ff5380f65f639f043680868c74927c15f7428499Chris Lattner    <li>A target-independent implementation of the Apple "Blocks" runtime
62ff5380f65f639f043680868c74927c15f7428499Chris Lattner        interfaces.</li>
63ff5380f65f639f043680868c74927c15f7428499Chris Lattner   </ul>
64f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan
65f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan  <!--=====================================================================-->
66f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan  <h2 id="dir-structure">Source Structure</h2>
67f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan  <!--=====================================================================-->
68f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan
69f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan   <p>A short explanation of the directory structure of compiler-rt:</p>
70f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan
71f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan   <p>For testing it is possible to build a generic library and an optimized library.
72f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan       The optimized library is formed by overlaying the optimized versions onto the generic library.
73f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan       Of course, some architectures have additional functions,
74f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan       so the optimized library may have functions not found in the generic version.</p>
75f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan
76f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan   <ul>   
77f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan    <li> lib/ Is a generic portable implementations.</li>
78f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan    <li> lib/<arch> has optimized version for the following supported architectures:
79f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan      <ul>
80f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan      <li>i386</li>
81f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan      <li>X86-64</li>
82f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan      <li>PowerPC</li>
83f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan      <li>PowerPC 64</li>
84f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan      </ul></li>
85f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan   </ul>
86f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan    
87ff5380f65f639f043680868c74927c15f7428499Chris Lattner  <!--=====================================================================-->
88ff5380f65f639f043680868c74927c15f7428499Chris Lattner  <h2>Get it and get involved!</h2>
89ff5380f65f639f043680868c74927c15f7428499Chris Lattner  <!--=====================================================================-->
90ff5380f65f639f043680868c74927c15f7428499Chris Lattner  
91c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <p>To check out the code, use:</p>
92c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  
93c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <ul>
94c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <li>svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt</li>
95c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <li>cd compiler-rt</li>
96c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <li>make</li>
97c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  </ul>
98c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  
99c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <p>Note that the library will probably only build out of the box on Darwin,
100c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner     but patches to improve portability are definitely welcome.</p>
101c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  
102c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <p>compiler-rt doesn't have its own mailing list, if you have questions please
103c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner     email the <a
104c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner    href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> mailing
105c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner    list.  Commits to the compiler-rt SVN module are automatically sent to the
106c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner    <a 
107c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>
108c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner    mailing list.</p>
109ff5380f65f639f043680868c74927c15f7428499Chris Lattner</div>
110ff5380f65f639f043680868c74927c15f7428499Chris Lattner</body>
111ff5380f65f639f043680868c74927c15f7428499Chris Lattner</html>
112