- 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>