index.html revision 135bcdf9ca7584489050b23b2ee155cce6d6cce3
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>
64ff5380f65f639f043680868c74927c15f7428499Chris Lattner  
65ff5380f65f639f043680868c74927c15f7428499Chris Lattner  <!--=====================================================================-->
66ff5380f65f639f043680868c74927c15f7428499Chris Lattner  <h2>Get it and get involved!</h2>
67ff5380f65f639f043680868c74927c15f7428499Chris Lattner  <!--=====================================================================-->
68ff5380f65f639f043680868c74927c15f7428499Chris Lattner  
69c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <p>To check out the code, use:</p>
70c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  
71c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <ul>
72c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <li>svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt</li>
73c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <li>cd compiler-rt</li>
74c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <li>make</li>
75c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  </ul>
76c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  
77c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <p>Note that the library will probably only build out of the box on Darwin,
78c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner     but patches to improve portability are definitely welcome.</p>
79c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  
80c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  <p>compiler-rt doesn't have its own mailing list, if you have questions please
81c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner     email the <a
82c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner    href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> mailing
83c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner    list.  Commits to the compiler-rt SVN module are automatically sent to the
84c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner    <a 
85c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner  href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>
86c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner    mailing list.</p>
87ff5380f65f639f043680868c74927c15f7428499Chris Lattner</div>
88ff5380f65f639f043680868c74927c15f7428499Chris Lattner</body>
89ff5380f65f639f043680868c74927c15f7428499Chris Lattner</html>
90