summaryrefslogtreecommitdiff
path: root/www/index.html
blob: c4306cd2f9ef5b5e9b66326e9810d9c4b3a436d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<!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>