index.html revision f998156715cdf8ba5d07ab8c853d803a22867e77
1ff5380f65f639f043680868c74927c15f7428499Chris Lattner<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 2ff5380f65f639f043680868c74927c15f7428499Chris Lattner "http://www.w3.org/TR/html4/strict.dtd"> 3ff5380f65f639f043680868c74927c15f7428499Chris Lattner<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ --> 4ff5380f65f639f043680868c74927c15f7428499Chris Lattner<html> 5ff5380f65f639f043680868c74927c15f7428499Chris Lattner<head> 6ff5380f65f639f043680868c74927c15f7428499Chris Lattner <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 7c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <title>"compiler-rt" Runtime Library</title> 8ff5380f65f639f043680868c74927c15f7428499Chris Lattner <link type="text/css" rel="stylesheet" href="menu.css"> 9ff5380f65f639f043680868c74927c15f7428499Chris Lattner <link type="text/css" rel="stylesheet" href="content.css"> 10ff5380f65f639f043680868c74927c15f7428499Chris Lattner</head> 11135bcdf9ca7584489050b23b2ee155cce6d6cce3Chris Lattner 12ff5380f65f639f043680868c74927c15f7428499Chris Lattner<body> 13ff5380f65f639f043680868c74927c15f7428499Chris Lattner<!--#include virtual="menu.html.incl"--> 14ff5380f65f639f043680868c74927c15f7428499Chris Lattner<div id="content"> 15ff5380f65f639f043680868c74927c15f7428499Chris Lattner <!--*********************************************************************--> 16c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <h1>"compiler-rt" Runtime Library</h1> 17ff5380f65f639f043680868c74927c15f7428499Chris Lattner <!--*********************************************************************--> 18ff5380f65f639f043680868c74927c15f7428499Chris Lattner 19c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <p>The compiler-rt project is a simple library that provides an implementation 20ff5380f65f639f043680868c74927c15f7428499Chris Lattner of the low-level target-specific hooks required by code generation and 21ff5380f65f639f043680868c74927c15f7428499Chris Lattner other runtime components. For example, when compiling for a 32-bit target, 22ff5380f65f639f043680868c74927c15f7428499Chris Lattner converting a double to a 64-bit unsigned integer is compiling into a runtime 23c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner call to the "__fixunsdfdi" function. The compiler-rt library provides 24ff5380f65f639f043680868c74927c15f7428499Chris Lattner optimized implementations of this and other low-level routines.</p> 25eb561bef8f503f399d1a429737f5657aa6e21369Chris Lattner 26eb561bef8f503f399d1a429737f5657aa6e21369Chris Lattner <p>All of the code in the compiler-rt project is available under the standard 27eb561bef8f503f399d1a429737f5657aa6e21369Chris Lattner <a href="http://llvm.org/docs/DeveloperPolicy.html#license">LLVM 28eb561bef8f503f399d1a429737f5657aa6e21369Chris Lattner License</a>, a "BSD-style" license.</p> 29ff5380f65f639f043680868c74927c15f7428499Chris Lattner 30ff5380f65f639f043680868c74927c15f7428499Chris Lattner <!--=====================================================================--> 31ff5380f65f639f043680868c74927c15f7428499Chris Lattner <h2 id="goals">Goals</h2> 32ff5380f65f639f043680868c74927c15f7428499Chris Lattner <!--=====================================================================--> 33ff5380f65f639f043680868c74927c15f7428499Chris Lattner 34c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <p>Different targets require different routines. The compiler-rt project aims 35ff5380f65f639f043680868c74927c15f7428499Chris Lattner to implement these routines in both target-independent C form as well as 36ff5380f65f639f043680868c74927c15f7428499Chris Lattner providing heavily optimized assembly versions of the routines in some 37c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner cases. It should be very easy to bring compiler-rt to support a new 38ff5380f65f639f043680868c74927c15f7428499Chris Lattner target by adding the new routines needed by that target.</p> 39ff5380f65f639f043680868c74927c15f7428499Chris Lattner 40c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <p>Where it make sense, the compiler-rt project aims to implement interfaces 41ff5380f65f639f043680868c74927c15f7428499Chris Lattner that are drop-in compatible with the libgcc interfaces.</p> 42ff5380f65f639f043680868c74927c15f7428499Chris Lattner 43ff5380f65f639f043680868c74927c15f7428499Chris Lattner <!--=====================================================================--> 44ff5380f65f639f043680868c74927c15f7428499Chris Lattner <h2 id="features">Features</h2> 45ff5380f65f639f043680868c74927c15f7428499Chris Lattner <!--=====================================================================--> 46ff5380f65f639f043680868c74927c15f7428499Chris Lattner 47c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <p>The current feature set of compiler-rt is:</p> 48ff5380f65f639f043680868c74927c15f7428499Chris Lattner 49ff5380f65f639f043680868c74927c15f7428499Chris Lattner <ul> 50ff5380f65f639f043680868c74927c15f7428499Chris Lattner <li>Full support for the libgcc interfaces required by these targets: 51ff5380f65f639f043680868c74927c15f7428499Chris Lattner <ul> 52ff5380f65f639f043680868c74927c15f7428499Chris Lattner <li>Darwin i386</li> 53ff5380f65f639f043680868c74927c15f7428499Chris Lattner <li>Darwin X86-64</li> 54ff5380f65f639f043680868c74927c15f7428499Chris Lattner <li>Darwin PowerPC</li> 55ff5380f65f639f043680868c74927c15f7428499Chris Lattner <li>Darwin PowerPC 64</li> 56ff5380f65f639f043680868c74927c15f7428499Chris Lattner </ul></li> 57ff5380f65f639f043680868c74927c15f7428499Chris Lattner 58ff5380f65f639f043680868c74927c15f7428499Chris Lattner <li>High performance hand tuned implementations of commonly used functions 59ff5380f65f639f043680868c74927c15f7428499Chris Lattner like __floatundidf in assembly that are dramatically faster than the 60ff5380f65f639f043680868c74927c15f7428499Chris Lattner libgcc implementations.</li> 61ff5380f65f639f043680868c74927c15f7428499Chris Lattner <li>A target-independent implementation of the Apple "Blocks" runtime 62ff5380f65f639f043680868c74927c15f7428499Chris Lattner interfaces.</li> 63ff5380f65f639f043680868c74927c15f7428499Chris Lattner </ul> 64f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan 65f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <!--=====================================================================--> 66f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <h2 id="dir-structure">Source Structure</h2> 67f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <!--=====================================================================--> 68f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan 69f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <p>A short explanation of the directory structure of compiler-rt:</p> 70f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan 71f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <p>For testing it is possible to build a generic library and an optimized library. 72f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan The optimized library is formed by overlaying the optimized versions onto the generic library. 73f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan Of course, some architectures have additional functions, 74f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan so the optimized library may have functions not found in the generic version.</p> 75f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan 76f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <ul> 77f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <li> lib/ Is a generic portable implementations.</li> 78f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <li> lib/<arch> has optimized version for the following supported architectures: 79f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <ul> 80f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <li>i386</li> 81f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <li>X86-64</li> 82f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <li>PowerPC</li> 83f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan <li>PowerPC 64</li> 84f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan </ul></li> 85f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan </ul> 86f998156715cdf8ba5d07ab8c853d803a22867e77Edward O'Callaghan 87ff5380f65f639f043680868c74927c15f7428499Chris Lattner <!--=====================================================================--> 88ff5380f65f639f043680868c74927c15f7428499Chris Lattner <h2>Get it and get involved!</h2> 89ff5380f65f639f043680868c74927c15f7428499Chris Lattner <!--=====================================================================--> 90ff5380f65f639f043680868c74927c15f7428499Chris Lattner 91c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <p>To check out the code, use:</p> 92c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner 93c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <ul> 94c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <li>svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt</li> 95c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <li>cd compiler-rt</li> 96c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <li>make</li> 97c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner </ul> 98c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner 99c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <p>Note that the library will probably only build out of the box on Darwin, 100c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner but patches to improve portability are definitely welcome.</p> 101c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner 102c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <p>compiler-rt doesn't have its own mailing list, if you have questions please 103c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner email the <a 104c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> mailing 105c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner list. Commits to the compiler-rt SVN module are automatically sent to the 106c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner <a 107c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a> 108c1346747862498226b5af3c4d4bd3c4dc429d5d7Chris Lattner mailing list.</p> 109ff5380f65f639f043680868c74927c15f7428499Chris Lattner</div> 110ff5380f65f639f043680868c74927c15f7428499Chris Lattner</body> 111ff5380f65f639f043680868c74927c15f7428499Chris Lattner</html> 112