aboutsummaryrefslogtreecommitdiffstats
path: root/docs/ReleaseNotes.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/ReleaseNotes.html')
-rw-r--r--docs/ReleaseNotes.html125
1 files changed, 97 insertions, 28 deletions
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index c1b1f41..54cfa20 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -206,6 +206,36 @@ Release Notes</a>.</h1>
</div>
+
+<!--=========================================================================-->
+<h3>
+<a name="Polly">Polly: Polyhedral Optimizer</a>
+</h3>
+
+<div>
+
+ <p><a href="http://polly.llvm.org/">Polly</a> is an <em>experimental</em>
+ optimizer for data locality and parallelism. It currently provides high-level
+ loop optimizations and automatic parallelisation (using the OpenMP run time).
+ Work in the area of automatic SIMD and accelerator code generation was
+ started.
+
+ <p>Within the LLVM 3.1 time-frame there were the following highlights:</p>
+
+ <ul>
+ <li>Polly became an official LLVM project</li>
+ <li>Polly can be loaded directly into clang (Enabled by '-O3 -mllvm -polly'
+ )</li>
+ <li>An automatic scheduling optimizer (derived from <a
+ href="http://pluto-compiler.sourceforge.net/">Pluto</a>) was integrated. It
+ performs loop transformations to optimize for data-locality and parallelism.
+ The transformations include, but are not limited to interchange, fusion,
+ fission, skewing and tiling.
+ </li>
+ </ul>
+
+</div>
+
</div>
<!-- *********************************************************************** -->
@@ -269,6 +299,8 @@ Release Notes</a>.</h1>
Support to model instruction bundling / packing.</li>
<li><a href="#armintegratedassembler">ARM Integrated Assembler</a>,
A full featured assembler and direct-to-object support for ARM.</li>
+ <li><a href="#blockplacement">Basic Block Placement</a>
+ Probability driven basic block placement.</li>
<li>....</li>
</ul>
@@ -290,6 +322,11 @@ Release Notes</a>.</h1>
<li>IR support for vectors of pointers, including vector GEPs.</li>
<li>Module flags have been introduced. They convey information about the
module as a whole to LLVM subsystems.</li>
+ <li>Loads can now have range metadata attached to them to describe the
+ possible values being loaded.</li>
+ <li>Inline cost heuristics have been completely overhauled and now closely
+ model constant propagation through call sites, disregard trivially dead
+ code costs, and can model C++ STL iterator patterns.</li>
<li>....</li>
</ul>
</div>
@@ -306,6 +343,14 @@ Release Notes</a>.</h1>
optimizers:</p>
<ul>
+ <li>The loop unroll pass now is able to unroll loops with run-time trip counts.
+ This feature is turned off by default, and is enabled with the
+ <code>-unroll-runtime</code> flag.</li>
+ <li>A new basic-block autovectorization pass is available. Pass
+ <code>-vectorize</code> to run this pass along with some associated
+ post-vectorization cleanup passes. For more information, see the EuroLLVM
+ 2012 slides: <a href="http://llvm.org/devmtg/2012-04-12/Slides/Hal_Finkel.pdf">
+ Autovectorization with LLVM</a>.</li>
<li>....</li>
</ul>
@@ -365,6 +410,25 @@ Release Notes</a>.</h1>
is clobbered.</li>
</ul>
+<p> We added new TableGen infrastructure to support bundling for
+ Very Long Instruction Word (VLIW) architectures. TableGen can now
+ automatically generate a deterministic finite automaton from a VLIW
+ target's schedule description which can be queried to determine
+ legal groupings of instructions in a bundle.</p>
+
+<p> We have added a new target independent VLIW packetizer based on the
+ DFA infrastructure to group machine instructions into bundles.</p>
+
+</div>
+
+<h4>
+<a name="blockplacement">Basic Block Placement</a>
+</h4>
+<div>
+<p>A probability based block placement and code layout algorithm was added to
+LLVM's code generator. This layout pass supports probabilities derived from
+static heuristics as well as source code annotations such as
+<code>__builtin_expect</code>.</p>
</div>
<!--=========================================================================-->
@@ -382,6 +446,8 @@ Release Notes</a>.</h1>
<li>Call instructions use the new register mask operands for faster compile
times and better support for different calling conventions. The old WINCALL
instructions are no longer needed.</li>
+ <li>DW2 Exception Handling is enabled on Cygwin and MinGW.</li>
+ <li>Support for implicit TLS model used with MS VC runtime</li>
</ul>
</div>
@@ -401,7 +467,6 @@ Release Notes</a>.</h1>
<li>On Darwin, the ARM target now has a full-featured integrated assembler.
</li>
</ul>
-</div>
<h4>
<a name="armintegratedassembler">ARM Integrated Assembler</a>
@@ -419,6 +484,8 @@ subtarget and CPU specific extensions for VFP2, VFP3 and NEON.</p>
for details). While there is some, and growing, support for pre-unfied (divided)
syntax, there are still significant gaps in that support.</p>
</div>
+
+</div>
<!--=========================================================================-->
<h3>
<a name="MIPS">MIPS Target Improvements</a>
@@ -441,6 +508,8 @@ syntax, there are still significant gaps in that support.</p>
<div>
+<p>Support for Qualcomm's Hexagon VLIW processor has been added.</p>
+
<ul>
<li>....</li>
@@ -488,39 +557,39 @@ syntax, there are still significant gaps in that support.</p>
<code>TargetMachine</code>. As a consequence, the associated flags will
no longer be accepted by <tt>clang -mllvm</tt>. This includes:
<ul>
-<li><code>llvm::PrintMachineCode</code>
-<li><code>llvm::NoFramePointerElim</code>
-<li><code>llvm::NoFramePointerElimNonLeaf</code>
-<li><code>llvm::DisableFramePointerElim(const MachineFunction &)</code>
-<li><code>llvm::LessPreciseFPMADOption</code>
-<li><code>llvm::LessPrecideFPMAD()</code>
-<li><code>llvm::NoExcessFPPrecision</code>
-<li><code>llvm::UnsafeFPMath</code>
-<li><code>llvm::NoInfsFPMath</code>
-<li><code>llvm::NoNaNsFPMath</code>
-<li><code>llvm::HonorSignDependentRoundingFPMathOption</code>
-<li><code>llvm::HonorSignDependentRoundingFPMath()</code>
-<li><code>llvm::UseSoftFloat</code>
-<li><code>llvm::FloatABIType</code>
-<li><code>llvm::NoZerosInBSS</code>
-<li><code>llvm::JITExceptionHandling</code>
-<li><code>llvm::JITEmitDebugInfo</code>
-<li><code>llvm::JITEmitDebugInfoToDisk</code>
-<li><code>llvm::GuaranteedTailCallOpt</code>
-<li><code>llvm::StackAlignmentOverride</code>
-<li><code>llvm::RealignStack</code>
-<li><code>llvm::DisableJumpTables</code>
-<li><code>llvm::EnableFastISel</code>
-<li><code>llvm::getTrapFunctionName()</code>
-<li><code>llvm::EnableSegmentedStacks</code>
+<li><code>llvm::PrintMachineCode</code></li>
+<li><code>llvm::NoFramePointerElim</code></li>
+<li><code>llvm::NoFramePointerElimNonLeaf</code></li>
+<li><code>llvm::DisableFramePointerElim(const MachineFunction &)</code></li>
+<li><code>llvm::LessPreciseFPMADOption</code></li>
+<li><code>llvm::LessPrecideFPMAD()</code></li>
+<li><code>llvm::NoExcessFPPrecision</code></li>
+<li><code>llvm::UnsafeFPMath</code></li>
+<li><code>llvm::NoInfsFPMath</code></li>
+<li><code>llvm::NoNaNsFPMath</code></li>
+<li><code>llvm::HonorSignDependentRoundingFPMathOption</code></li>
+<li><code>llvm::HonorSignDependentRoundingFPMath()</code></li>
+<li><code>llvm::UseSoftFloat</code></li>
+<li><code>llvm::FloatABIType</code></li>
+<li><code>llvm::NoZerosInBSS</code></li>
+<li><code>llvm::JITExceptionHandling</code></li>
+<li><code>llvm::JITEmitDebugInfo</code></li>
+<li><code>llvm::JITEmitDebugInfoToDisk</code></li>
+<li><code>llvm::GuaranteedTailCallOpt</code></li>
+<li><code>llvm::StackAlignmentOverride</code></li>
+<li><code>llvm::RealignStack</code></li>
+<li><code>llvm::DisableJumpTables</code></li>
+<li><code>llvm::EnableFastISel</code></li>
+<li><code>llvm::getTrapFunctionName()</code></li>
+<li><code>llvm::EnableSegmentedStacks</code></li>
</ul></li>
+ <li>The MDBuilder class has been added to simplify the creation of
+ metadata.</li>
<li>....</li>
</ul>
</div>
-</div>
-
<!--=========================================================================-->
<h3>
<a name="tools_changes">Tools Changes</a>