[llvm-commits] [llvm] r145198 - /llvm/trunk/docs/ReleaseNotes.html
Chris Lattner
sabre at nondot.org
Sun Nov 27 13:30:29 PST 2011
Author: lattner
Date: Sun Nov 27 15:30:28 2011
New Revision: 145198
URL: http://llvm.org/viewvc/llvm-project?rev=145198&view=rev
Log:
some writing.
Modified:
llvm/trunk/docs/ReleaseNotes.html
Modified: llvm/trunk/docs/ReleaseNotes.html
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/ReleaseNotes.html?rev=145198&r1=145197&r2=145198&view=diff
==============================================================================
--- llvm/trunk/docs/ReleaseNotes.html (original)
+++ llvm/trunk/docs/ReleaseNotes.html Sun Nov 27 15:30:28 2011
@@ -753,7 +753,7 @@
llvm/lib/Archive - replace with lib object?
-->
-<p>LLVM 3.0 includes several major changes:</p>
+<p>LLVM 3.0 includes several major changes and big features:</p>
<ul>
<li>llvm-gcc is no longer supported, and not included in the release. We
@@ -767,12 +767,19 @@
href="http://blog.llvm.org/2011/09/greedy-register-allocation-in-llvm-30.html">blog post</a> or its talk at the <a
href="http://llvm.org/devmtg/2011-11/">Developer Meeting</a>
for more information.</li>
-<li> New <a href="Atomics.html">atomics</a> instructions, "#i_fence" instruction, cmpxchg, atomicrmw too. What target support (X86/ARM)? Also 'atomic load/store'.
+<li>LLVM IR now includes full support for <a href="Atomics.html">atomics
+ memory operations</a> intended to support the C++'11 and C'1x memory models.
+ This includes <a href="LangRef.html#memoryops">atomic load and store,
+ compare and exchange, and read/modify/write instructions</a> as well as a
+ full set of <a href="LangRef.html#ordering">memory ordering constraints</a>.
+ Please see the <a href="Atomics.html">Atomics Guide</a> for more
+ information.
</li>
<li>The LLVM IR exception handling representation has been redesigned and
reimplemented, making it more elegant, fixing a huge number of bugs, and
enabling inlining and other optimizations. Please see its blog post (XXX
- not yet) for more information.</li>
+ not yet) and the <a href="ExceptionHandling.html">Exception Handling
+ documentation</a> for more information.</li>
<li>The LLVM IR Type system has been redesigned and reimplemented, making it
faster and solving some long-standing problems.
Please see its <a
@@ -780,13 +787,14 @@
post</a> for more information.</li>
<li>The MIPS backend has made major leaps in this release, going from an
- experimental target to being virtually production quality that supports a
+ experimental target to being virtually production quality and supporting a
wide variety of MIPS subtargets. See the <a href="#MIPS">MIPS section</a>
below for more information.</li>
<li>The optimizer and code generator now supports gprof and gcov-style coverage
- and profiling information, and includes a new llvm-cov tool. Clang exposes
- this through GCC-compatible command line options.</li>
+ and profiling information, and includes a new llvm-cov tool (but also works
+ with gcov). Clang exposes coverage and profiling through GCC-compatible
+ command line options.</li>
</ul>
</div>
@@ -802,38 +810,28 @@
<p>LLVM IR has several new features for better support of new targets and that
expose new optimization opportunities:</p>
- New llvm.expect intrinsic.
- New llvm.fma intrinsic.
-
- LangRef.html#fnattrs uwtable attribute for asynch unwind tables.
- llvm.prefetch now takes a 4th argument that specifies whether the prefetch happens to the icache or dcache.
- New nonlazybind function attribute.
- data layout string can encode the natural alignment of the target's stack for better optimization (LangRef.html#datalayout)
- returns_twice attribute (rafael)
-
-</div>
-
-<!--=========================================================================-->
-<h3>
-<a name="loopoptimization">Loop Optimization Improvements</a>
-</h3>
-
-<div>
-<p>The induction variable simplification pass in 3.0 only modifies
- induction variables when profitable. Sign and zero extension
- elimination, linear function test replacement, loop unrolling, and
- other simplifications that require induction variable analysis have
- been generalized so they no longer require loops to be rewritten in a
- typically suboptimal form prior to optimization. This new design
- preserves more IR level information, avoids undoing earlier loop
- optimizations (particularly hand-optimized loops), and no longer
- strongly depends on the code generator rewriting loops a second time
- in a now optimal form--an intractable problem.</p>
-
-<p>The original behavior can be restored with -mllvm -enable-iv-rewrite;
- however, support for this mode will be short lived. As such, bug
- reports should be filed for any significant performance regressions
- when moving from -mllvm -enable-iv-rewrite to the 3.0 default mode.</p>
+ <ul>
+ <li><a href="Atomics.html">Atomic memory accesses and memory ordering</a> are
+ now directly expressible in the IR.</li>
+ <li>A new <a href="LangRef.html#int_fma">llvm.fma intrinsic</a> directly
+ represents floating point multiply accumulate operations without an
+ intermediate rounding stage.</li>
+ <li>A new llvm.expect intrinsic (XXX not documented in langref) allows a
+ frontend to express expected control flow (and the __builtin_expect builtin
+ from GNU C).</li>
+ <li>The <a href="LangRef.html#int_prefetch">llvm.prefetch intrinsic</a> now
+ takes a 4th argument that specifies whether the prefetch happens from the
+ icache or dcache.</li>
+ <li>The new <a href="LangRef.html#uwtable">uwtable function attribute</a>
+ allows a frontend to control emission of unwind tables.</li>
+ <li>The new <a href="LangRef.html#fnattrs">nonlazybind function
+ attribute</a> allow optimization of Global Offset Table (GOT) accesses.</li>
+ <li>The new <a href="LangRef.html#returns_twice">returns_twice attribute</a>
+ allows better modeling of functions like setjmp.</li>
+ <li>The <a href="LangRef.html#datalayout">target datalayout</a> string can now
+ encode the natural alignment of the target's stack for better optimization.
+ </li>
+ </ul>
</div>
<!--=========================================================================-->
@@ -843,12 +841,14 @@
<div>
-<p>In addition to a large array of minor performance tweaks and bug fixes, this
+<p>In addition to many minor performance tweaks and bug fixes, this
release includes a few major enhancements and additions to the
optimizers:</p>
<ul>
- Pass manager extension API.
+<li>The pass manager now has an extension API that allows front-ends and plugins
+ to insert their own optimizations in the well-known places in the standard
+ pass optimization pipeline.</li>
<li>Information about <a href="BranchWeightMetadata.html">branch probability</a>
and basic block frequency is now available within LLVM, based on a
@@ -857,10 +857,24 @@
register spill placement and if-conversion, with additional optimizations
planned for future releases. The same framework is intended for eventual
use with profile-guided optimization.</li>
-
- ARC language specific optimizer (Transforms/ObjCARC) a decent example of language-specific transformation.
-
+<li>The "-indvars" induction variable simplification pass only modifies
+ induction variables when profitable. Sign and zero extension
+ elimination, linear function test replacement, loop unrolling, and
+ other simplifications that require induction variable analysis have
+ been generalized so they no longer require loops to be rewritten into
+ canonical form prior to optimization. This new design
+ preserves more IR level information, avoids undoing earlier loop
+ optimizations (particularly hand-optimized loops), and no longer
+ requires the code generator to reconstruct loops into an optimal form -
+ an intractable problem.</li>
+
+<li>LLVM now includes a pass to optimize retain/release calls for the
+ <a href="http://clang.llvm.org/docs/AutomaticReferenceCounting.html">Automatic
+ Reference Counting</a> (ARC) Objective-C language feature (in
+ lib/Transforms/ObjCARC). It is a decent example of implementing a
+ source-language-specific optimization in LLVM.</li>
+
</ul>
</div>
More information about the llvm-commits
mailing list