Add credit and release notes for r150307. By Kai Nacke.
[oota-llvm.git] / docs / ReleaseNotes.html
index 7dd0b8d55069a0b88803272dc068d00ee91d3bce..aa85e15f5825564cc3814a2bac276637de31a58b 100644 (file)
@@ -267,6 +267,8 @@ Release Notes</a>.</h1>
       a fast memory error detector.</li>
   <li><a href="CodeGenerator.html#machineinstrbundle">MachineInstr Bundles</a>,
       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>....</li>
 </ul>
 
@@ -285,7 +287,11 @@ Release Notes</a>.</h1>
 
   <ul>
     <li>IR support for half float</li>
-       <li>IR support for vectors of pointers, including vector GEPs.</li>
+    <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>....</li>
   </ul>
 </div>
@@ -302,6 +308,12 @@ 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.</li>
   <li>....</li>
 </ul>
 
@@ -334,12 +346,12 @@ Release Notes</a>.</h1>
 
 <div>
 
-<p>We have changed the way that the Type Legalizer legalizes vectors.
-       The type legalizer now attempts to promote integer elements.
-       This enabled the implementation of vector-select.
-       Additionally, we see a performance boost on workloads which use vectors of chars and shorts, since they are now promoted
-       to 32-bit types, which are better supported by the SIMD instruction set.
-       Floating point types are still widened as before.</p>
+<p>We have changed the way that the Type Legalizer legalizes vectors. The type
+   legalizer now attempts to promote integer elements.  This enabled the
+   implementation of vector-select.  Additionally, we see a performance boost on
+   workloads which use vectors of chars and shorts, since they are now promoted
+   to 32-bit types, which are better supported by the SIMD instruction set.
+   Floating point types are still widened as before.</p>
 
 
 <p>We have put a significant amount of work into the code generator
@@ -348,10 +360,28 @@ Release Notes</a>.</h1>
 
 <ul>
   <li>TableGen can now synthesize register classes that are only needed to
-  represent combinations of constraints from instructions and sub-registers.
-  The synthetic register classes inherit most of their properties form their
-  closest user-defined super-class.</li>
+      represent combinations of constraints from instructions and sub-registers.
+      The synthetic register classes inherit most of their properties form their
+      closest user-defined super-class.</li>
+  <li><code>MachineRegisterInfo</code> now allows the reserved registers to be
+      frozen when register allocation starts.  Target hooks should use the
+      <code>MRI-&gt;canReserveReg(FramePtr)</code> method to avoid accidentally
+      disabling frame pointer elimination during register allocation.</li>
+  <li>A new kind of <code>MachineOperand</code> provides a compact
+      representation of large clobber lists on call instructions.  The register
+      mask operand references a bit mask of preserved registers. Everything else
+      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>
 
 <!--=========================================================================-->
@@ -366,7 +396,11 @@ Release Notes</a>.</h1>
 <ul>
   <li>Bug fixes and improved support for AVX1</li>
   <li>Support for AVX2 (still incomplete at this point)</li>
-  <li>....</li>
+  <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>
@@ -382,10 +416,29 @@ Release Notes</a>.</h1>
 
 <ul>
   <li>The constant island pass now supports basic block and constant pool entry
-  alignments greater than 4 bytes.</li> </ul>
-</div>
+  alignments greater than 4 bytes.</li>
+  <li>On Darwin, the ARM target now has a full-featured integrated assembler.
+  </li>
+</ul>
+
+<h4>
+<a name="armintegratedassembler">ARM Integrated Assembler</a>
+</h4>
+<div>
+<p>The ARM target now includes a full featured macro assembler, including
+direct-to-object module support for clang. The assembler is currently enabled
+by default for Darwin only pending testing and any additional necessary
+platform specific support for Linux.</p>
+
+<p>Full support is included for Thumb1, Thumb2 and ARM modes, along with
+subtarget and CPU specific extensions for VFP2, VFP3 and NEON.</p>
 
+<p>The assembler is Unified Syntax only (see ARM Architecural Reference Manual
+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>
@@ -408,6 +461,8 @@ Release Notes</a>.</h1>
 
 <div>
 
+<p>Support for Qualcomm's Hexagon VLIW processor has been added.</p>
+
 <ul>
   <li>....</li>
 
@@ -428,9 +483,12 @@ Release Notes</a>.</h1>
    from the previous release.</p>
 
 <ul>
-<li>LLVM 3.1 removes support for reading LLVM 2.9 bitcode files.  Going forward,
-    we aim for all future versions of LLVM to read bitcode files and .ll files
-    produced by LLVM 3.0 and later.</li>
+  <li>LLVM 3.1 removes support for reading LLVM 2.9 bitcode files. Going
+      forward, we aim for all future versions of LLVM to read bitcode files and
+      <tt>.ll</tt> files produced by LLVM 3.0 and later.</li>
+  <li>The <tt>unwind</tt> instruction is now gone. With the introduction of the
+      new exception handling system in LLVM 3.0, the <tt>unwind</tt> instruction
+      became obsolete.</li>
   <li>....</li>
 </ul>
 
@@ -446,6 +504,62 @@ Release Notes</a>.</h1>
 <p>In addition, many APIs have changed in this release.  Some of the major
    LLVM API changes are:</p>
 
+<ul>
+  <li>Target specific options have been moved from global variables to members
+      on the new <code>TargetOptions</code> class, which is local to each
+      <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>
+<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>
+
+<!--=========================================================================-->
+<h3>
+<a name="tools_changes">Tools Changes</a>
+</h3>
+
+<div>
+
+<p>In addition, some tools have changed in this release. Some of the changes
+   are:</p>
+
+
+<ul>
+  <li>llvm-stress is a command line tool for generating random .ll files to fuzz
+      different LLVM components. </li>
+  <li>....</li>
+</ul>
+
 <ul>
   <li>....</li>
 </ul>