<!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 on supported targets.</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 id="requirements">Platform Support</h2>
  <!--=====================================================================-->

   <p>Compiler-RT is known to work on the following platforms:</p>

   <li>Machine Architectures:
    <ul>
     <li>i386</li>
     <li>X86-64</li>
     <li>SPARC64</li>
     <li>ARM</li>
     <li>PowerPC</li>
     <li>PowerPC 64</li>
    </ul></li>

   <table cellpadding="3" summary="Known Compiler-RT platforms">
   <tr>
     <th>OS</th>
     <th>Arch</th>
   </tr>
   <tr>
     <td>AuroraUX</td>
     <td>All<sup>
   </tr>
   <tr>
     <td>DragonFlyBSD</td>
     <td>All<sup>
   </tr>
   <tr>
     <td>FreeBSD</td>
     <td>All<sup>
   </tr>
   <tr>
     <td>NetBSD</td>
     <td>All<sup>
   </tr>
   <tr>
     <td>Linux</td>
     <td>All<sup>
   </tr>
   <tr>
     <td>Darwin</td>
     <td>All<sup>
   </tr>
   </table>

  <!--=====================================================================-->
  <h2 id="dir-structure">Source Structure</h2>
  <!--=====================================================================-->

   <p>A short explanation of the directory structure of compiler-rt:</p>

   <p>For testing it is possible to build a generic library and an optimized library.
       The optimized library is formed by overlaying the optimized versions onto the generic library.
       Of course, some architectures have additional functions,
       so the optimized library may have functions not found in the generic version.</p>

   <ul>   
    <li> lib/ Is a generic portable implementations.</li>
    <li> lib/(arch) has optimized version for the supported architectures.</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>mkdir build</li>
  <li>cd build</li>
  <li>cmake ../compiler-rt</li>
  <li>make</li>
  <li>To run the Compiler-RT Test Suit (recommended):</li>
  <li>ctest</li>
  <li>To Install:</li>
  <li>make install</li>
  </ul>
  
  <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>
