blob: 2f6a679893590204e65002dabd7cb88c771e3ae3 [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>
Chris Lattner135bcdf2009-07-02 21:34:35 +000011
Chris Lattnerff5380f2009-06-30 22:56:43 +000012<body>
13<!--#include virtual="menu.html.incl"-->
14<div id="content">
15 <!--*********************************************************************-->
Chris Lattnerc1346742009-07-01 17:16:20 +000016 <h1>"compiler-rt" Runtime Library</h1>
Chris Lattnerff5380f2009-06-30 22:56:43 +000017 <!--*********************************************************************-->
18
Chris Lattnerc1346742009-07-01 17:16:20 +000019 <p>The compiler-rt project is a simple library that provides an implementation
Chris Lattnerff5380f2009-06-30 22:56:43 +000020 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
Chris Lattnerc1346742009-07-01 17:16:20 +000023 call to the "__fixunsdfdi" function. The compiler-rt library provides
Chris Lattnerff5380f2009-06-30 22:56:43 +000024 optimized implementations of this and other low-level routines.</p>
Chris Lattnereb561be2009-07-02 21:29:19 +000025
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>
Chris Lattnerff5380f2009-06-30 22:56:43 +000029
30 <!--=====================================================================-->
31 <h2 id="goals">Goals</h2>
32 <!--=====================================================================-->
33
Chris Lattnerc1346742009-07-01 17:16:20 +000034 <p>Different targets require different routines. The compiler-rt project aims
Chris Lattnerff5380f2009-06-30 22:56:43 +000035 to implement these routines in both target-independent C form as well as
36 providing heavily optimized assembly versions of the routines in some
Chris Lattnerc1346742009-07-01 17:16:20 +000037 cases. It should be very easy to bring compiler-rt to support a new
Chris Lattnerff5380f2009-06-30 22:56:43 +000038 target by adding the new routines needed by that target.</p>
39
Chris Lattnerc1346742009-07-01 17:16:20 +000040 <p>Where it make sense, the compiler-rt project aims to implement interfaces
Chris Lattnerff5380f2009-06-30 22:56:43 +000041 that are drop-in compatible with the libgcc interfaces.</p>
42
43 <!--=====================================================================-->
44 <h2 id="features">Features</h2>
45 <!--=====================================================================-->
46
Chris Lattnerc1346742009-07-01 17:16:20 +000047 <p>The current feature set of compiler-rt is:</p>
Chris Lattnerff5380f2009-06-30 22:56:43 +000048
49 <ul>
50 <li>Full support for the libgcc interfaces required by these targets:
51 <ul>
52 <li>Darwin i386</li>
53 <li>Darwin X86-64</li>
54 <li>Darwin PowerPC</li>
55 <li>Darwin PowerPC 64</li>
56 </ul></li>
57
58 <li>High performance hand tuned implementations of commonly used functions
59 like __floatundidf in assembly that are dramatically faster than the
60 libgcc implementations.</li>
61 <li>A target-independent implementation of the Apple "Blocks" runtime
62 interfaces.</li>
63 </ul>
Edward O'Callaghanf9981562009-08-03 01:26:42 +000064
65 <!--=====================================================================-->
66 <h2 id="dir-structure">Source Structure</h2>
67 <!--=====================================================================-->
68
69 <p>A short explanation of the directory structure of compiler-rt:</p>
70
71 <p>For testing it is possible to build a generic library and an optimized library.
72 The optimized library is formed by overlaying the optimized versions onto the generic library.
73 Of course, some architectures have additional functions,
74 so the optimized library may have functions not found in the generic version.</p>
75
76 <ul>
77 <li> lib/ Is a generic portable implementations.</li>
Edward O'Callaghan18678da2009-08-03 01:29:04 +000078 <li> lib/(arch) has optimized version for the following supported architectures:
Edward O'Callaghanf9981562009-08-03 01:26:42 +000079 <ul>
80 <li>i386</li>
81 <li>X86-64</li>
82 <li>PowerPC</li>
83 <li>PowerPC 64</li>
84 </ul></li>
85 </ul>
86
Chris Lattnerff5380f2009-06-30 22:56:43 +000087 <!--=====================================================================-->
88 <h2>Get it and get involved!</h2>
89 <!--=====================================================================-->
90
Chris Lattnerc1346742009-07-01 17:16:20 +000091 <p>To check out the code, use:</p>
92
93 <ul>
94 <li>svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt</li>
95 <li>cd compiler-rt</li>
96 <li>make</li>
97 </ul>
98
99 <p>Note that the library will probably only build out of the box on Darwin,
100 but patches to improve portability are definitely welcome.</p>
101
102 <p>compiler-rt doesn't have its own mailing list, if you have questions please
103 email the <a
104 href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> mailing
105 list. Commits to the compiler-rt SVN module are automatically sent to the
106 <a
107 href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>
108 mailing list.</p>
Chris Lattnerff5380f2009-06-30 22:56:43 +0000109</div>
110</body>
111</html>