blob: b8760f9a1084ad7615463020cf148c2bcc6fb05c [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>"compiler-rt" Runtime Library</title>
<link type="text/css" rel="stylesheet" href="menu.css">
<link type="text/css" rel="stylesheet" href="content.css">
</head>
<body>
<!--#include virtual="menu.html.incl"-->
<div id="content">
<!--*********************************************************************-->
<h1>"compiler-rt" Runtime Library</h1>
<!--*********************************************************************-->
<p>The compiler-rt project is a simple library that provides an implementation
of the low-level target-specific hooks required by code generation and
other runtime components. For example, when compiling for a 32-bit target,
converting a double to a 64-bit unsigned integer is compiling into a runtime
call to the "__fixunsdfdi" function. The compiler-rt library provides
optimized implementations of this and other low-level routines.</p>
<p>All of the code in the compiler-rt project is available under the standard
<a href="http://llvm.org/docs/DeveloperPolicy.html#license">LLVM
License</a>, a "BSD-style" license.</p>
<!--=====================================================================-->
<h2 id="goals">Goals</h2>
<!--=====================================================================-->
<p>Different targets require different routines. The compiler-rt project aims
to implement these routines in both target-independent C form as well as
providing heavily optimized assembly versions of the routines in some
cases. It should be very easy to bring compiler-rt to support a new
target by adding the new routines needed by that target.</p>
<p>Where it make sense, the compiler-rt project aims to implement interfaces
that are drop-in compatible with the libgcc interfaces.</p>
<!--=====================================================================-->
<h2 id="features">Features</h2>
<!--=====================================================================-->
<p>The current feature set of compiler-rt is:</p>
<ul>
<li>Full support for the libgcc interfaces required by these targets:
<ul>
<li>Darwin i386</li>
<li>Darwin X86-64</li>
<li>Darwin PowerPC</li>
<li>Darwin PowerPC 64</li>
</ul></li>
<li>High performance hand tuned implementations of commonly used functions
like __floatundidf in assembly that are dramatically faster than the
libgcc implementations.</li>
<li>A target-independent implementation of the Apple "Blocks" runtime
interfaces.</li>
</ul>
<!--=====================================================================-->
<h2>Get it and get involved!</h2>
<!--=====================================================================-->
<p>To check out the code, use:</p>
<ul>
<li>svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt</li>
<li>cd compiler-rt</li>
<li>make</li>
</ul>
<p>Note that the library will probably only build out of the box on Darwin,
but patches to improve portability are definitely welcome.</p>
<p>compiler-rt doesn't have its own mailing list, if you have questions please
email the <a
href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> mailing
list. Commits to the compiler-rt SVN module are automatically sent to the
<a
href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>
mailing list.</p>
</div>
</body>
</html>