blob: b8760f9a1084ad7615463020cf148c2bcc6fb05c [file] [log] [blame]
Chris Lattnerff5380f2009-06-30 22:56:43 +00001<!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">
Chris Lattnerc1346742009-07-01 17:16:20 +00007 <title>"compiler-rt" Runtime Library</title>
Chris Lattnerff5380f2009-06-30 22:56:43 +00008 <link type="text/css" rel="stylesheet" href="menu.css">
9 <link type="text/css" rel="stylesheet" href="content.css">
10</head>
11<body>
12<!--#include virtual="menu.html.incl"-->
13<div id="content">
14 <!--*********************************************************************-->
Chris Lattnerc1346742009-07-01 17:16:20 +000015 <h1>"compiler-rt" Runtime Library</h1>
Chris Lattnerff5380f2009-06-30 22:56:43 +000016 <!--*********************************************************************-->
17
Chris Lattnerc1346742009-07-01 17:16:20 +000018 <p>The compiler-rt project is a simple library that provides an implementation
Chris Lattnerff5380f2009-06-30 22:56:43 +000019 of the low-level target-specific hooks required by code generation and
20 other runtime components. For example, when compiling for a 32-bit target,
21 converting a double to a 64-bit unsigned integer is compiling into a runtime
Chris Lattnerc1346742009-07-01 17:16:20 +000022 call to the "__fixunsdfdi" function. The compiler-rt library provides
Chris Lattnerff5380f2009-06-30 22:56:43 +000023 optimized implementations of this and other low-level routines.</p>
Chris Lattnereb561be2009-07-02 21:29:19 +000024
25 <p>All of the code in the compiler-rt project is available under the standard
26 <a href="http://llvm.org/docs/DeveloperPolicy.html#license">LLVM
27 License</a>, a "BSD-style" license.</p>
Chris Lattnerff5380f2009-06-30 22:56:43 +000028
29 <!--=====================================================================-->
30 <h2 id="goals">Goals</h2>
31 <!--=====================================================================-->
32
Chris Lattnerc1346742009-07-01 17:16:20 +000033 <p>Different targets require different routines. The compiler-rt project aims
Chris Lattnerff5380f2009-06-30 22:56:43 +000034 to implement these routines in both target-independent C form as well as
35 providing heavily optimized assembly versions of the routines in some
Chris Lattnerc1346742009-07-01 17:16:20 +000036 cases. It should be very easy to bring compiler-rt to support a new
Chris Lattnerff5380f2009-06-30 22:56:43 +000037 target by adding the new routines needed by that target.</p>
38
Chris Lattnerc1346742009-07-01 17:16:20 +000039 <p>Where it make sense, the compiler-rt project aims to implement interfaces
Chris Lattnerff5380f2009-06-30 22:56:43 +000040 that are drop-in compatible with the libgcc interfaces.</p>
41
42 <!--=====================================================================-->
43 <h2 id="features">Features</h2>
44 <!--=====================================================================-->
45
Chris Lattnerc1346742009-07-01 17:16:20 +000046 <p>The current feature set of compiler-rt is:</p>
Chris Lattnerff5380f2009-06-30 22:56:43 +000047
48 <ul>
49 <li>Full support for the libgcc interfaces required by these targets:
50 <ul>
51 <li>Darwin i386</li>
52 <li>Darwin X86-64</li>
53 <li>Darwin PowerPC</li>
54 <li>Darwin PowerPC 64</li>
55 </ul></li>
56
57 <li>High performance hand tuned implementations of commonly used functions
58 like __floatundidf in assembly that are dramatically faster than the
59 libgcc implementations.</li>
60 <li>A target-independent implementation of the Apple "Blocks" runtime
61 interfaces.</li>
62 </ul>
63
64 <!--=====================================================================-->
65 <h2>Get it and get involved!</h2>
66 <!--=====================================================================-->
67
Chris Lattnerc1346742009-07-01 17:16:20 +000068 <p>To check out the code, use:</p>
69
70 <ul>
71 <li>svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt</li>
72 <li>cd compiler-rt</li>
73 <li>make</li>
74 </ul>
75
76 <p>Note that the library will probably only build out of the box on Darwin,
77 but patches to improve portability are definitely welcome.</p>
78
79 <p>compiler-rt doesn't have its own mailing list, if you have questions please
80 email the <a
81 href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> mailing
82 list. Commits to the compiler-rt SVN module are automatically sent to the
83 <a
84 href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>
85 mailing list.</p>
Chris Lattnerff5380f2009-06-30 22:56:43 +000086</div>
87</body>
88</html>