summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-10-02 22:44:15 +0000
committerChris Lattner <sabre@nondot.org>2010-10-02 22:44:15 +0000
commit4eac9247aad81245cc849ebf850f527bae4fc60f (patch)
tree351550c598e4707c2b52f09fe114d5fc905956c2 /docs
parent7d9b6b439ad2d580780d7388e636ba02988653e6 (diff)
downloadllvm-4eac9247aad81245cc849ebf850f527bae4fc60f.tar.gz
llvm-4eac9247aad81245cc849ebf850f527bae4fc60f.tar.bz2
llvm-4eac9247aad81245cc849ebf850f527bae4fc60f.tar.xz
random updates
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115427 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
-rw-r--r--docs/ReleaseNotes.html197
1 files changed, 103 insertions, 94 deletions
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index 385e635763..7f0628bbac 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -453,6 +453,7 @@ organization changes have happened:
<ul>
<li>llvm-diff</li>
+<li>Direct .o file writing support for darwin/x86[64].</li>
</ul>
</div>
@@ -474,56 +475,6 @@ expose new optimization opportunities:</p>
New linker_private_weak and linker_private_weak_def_auto linkage types
Triples are now stored in normalized form. Triple::normalize.
-
-<li>LLVM 2.8 changes the internal order of operands in <a
- href="http://llvm.org/doxygen/classllvm_1_1InvokeInst.html"><tt>InvokeInst</tt></a>
- and <a href="http://llvm.org/doxygen/classllvm_1_1CallInst.html"><tt>CallInst</tt></a>.
- To be portable across releases, resort to <tt>CallSite</tt> and the
- high-level accessors, such as <tt>getCalledValue</tt> and <tt>setUnwindDest</tt>.
-</li>
-<li>
- You can no longer pass use_iterators directly to cast<> (and similar), because
- these routines tend to perform costly dereference operations more than once. You
- have to dereference the iterators yourself and pass them in.
-</li>
-<li>
- llvm.memcpy.*, llvm.memset.*, llvm.memmove.* (and possibly other?) intrinsics
- take an extra parameter now (i1 isVolatile), totaling 5 parameters.
- If you were creating these intrinsic calls and prototypes yourself (as opposed
- to using Intrinsic::getDeclaration), you can use UpgradeIntrinsicFunction/UpgradeIntrinsicCall
- to be portable accross releases.
- Note that you cannot use Intrinsic::getDeclaration() in a backwards compatible
- way (needs 2/3 types now, in 2.7 it needed just 1).
-</li>
-<li>
- SetCurrentDebugLocation takes a DebugLoc now instead of a MDNode.
- Change your code to use
- SetCurrentDebugLocation(DebugLoc::getFromDILocation(...)).
-</li>
-<li>
- VISIBILITY_HIDDEN is gone.
-</li>
-<li>
- The <tt>RegisterPass</tt> and <tt>RegisterAnalysisGroup</tt> templates are
- considered deprecated, but continue to function in LLVM 2.8. Clients are
- strongly advised to use the upcoming <tt>INITIALIZE_PASS()</tt> and
- <tt>INITIALIZE_AG_PASS()</tt> macros instead.
-<li>
- SMDiagnostic takes different parameters now. //FIXME: how to upgrade?
-</li>
-<li>
- The constructor for the Triple class no longer tries to understand odd triple
- specifications. Frontends should ensure that they only pass valid triples to
- LLVM. The Triple::normalize utility method has been added to help front-ends
- deal with funky triples.
-<li>
- Some APIs got renamed:
- <ul>
- <li>llvm_report_error -&gt; report_fatal_error</li>
- <li>llvm_install_error_handler -&gt; install_fatal_error_handler</li>
- <li>llvm::DwarfExceptionHandling -&gt; llvm::JITExceptionHandling</li>
- </ul>
-</li>
</ul>
</div>
@@ -718,50 +669,54 @@ it run faster:</p>
ARM: Half float support through intrinsics LangRef.html#int_fp16
<li>ARMGlobalMerge: <!-- Anton --> </li>
-<li>
- All of the NEON load and store intrinsics (llvm.arm.neon.vld* and
- llvm.arm.neon.vst*) take an extra parameter to specify the alignment in bytes
- of the memory being accessed.
-</li>
-<li>
- The llvm.arm.neon.vaba intrinsic (vector absolute difference and
- accumulate) has been removed. This operation is now represented using
- the llvm.arm.neon.vabd intrinsic (vector absolute difference) followed by a
- vector add.
-</li>
-<li>
- The llvm.arm.neon.vabdl and llvm.arm.neon.vabal intrinsics (lengthening
- vector absolute difference with and without accumlation) have been removed.
- They are represented using the llvm.arm.neon.vabd intrinsic (vector absolute
- difference) followed by a vector zero-extend operation, and for vabal,
- a vector add.
-</li>
-<li>
- The llvm.arm.neon.vmovn intrinsic has been removed. Calls of this intrinsic
- are now replaced by vector truncate operations.
-</li>
-<li>
- The llvm.arm.neon.vmovls and llvm.arm.neon.vmovlu intrinsics have been
- removed. They are now represented as vector sign-extend (vmovls) and
- zero-extend (vmovlu) operations.
-</li>
-<li>
- The llvm.arm.neon.vaddl*, llvm.arm.neon.vaddw*, llvm.arm.neon.vsubl*, and
- llvm.arm.neon.vsubw* intrinsics (lengthening vector add and subtract) have
- been removed. They are replaced by vector add and vector subtract operations
- where one (vaddw, vsubw) or both (vaddl, vsubl) of the operands are either
- sign-extended or zero-extended.
-</li>
-<li>
- The llvm.arm.neon.vmulls, llvm.arm.neon.vmullu, llvm.arm.neon.vmlal*, and
- llvm.arm.neon.vmlsl* intrinsics (lengthening vector multiply with and without
- accumulation and subtraction) have been removed. These operations are now
- represented as vector multiplications where the operands are either
- sign-extended or zero-extended, followed by a vector add for vmlal or a
- vector subtract for vmlsl. Note that the polynomial vector multiply
- intrinsic, llvm.arm.neon.vmullp, remains unchanged.
+<li>The ARM NEON intrinsics have been substantially reworked to reduce
+ redundancy and improve code generation. Some of the major changes are:
+ <ol>
+ <li>
+ All of the NEON load and store intrinsics (llvm.arm.neon.vld* and
+ llvm.arm.neon.vst*) take an extra parameter to specify the alignment in bytes
+ of the memory being accessed.
+ </li>
+ <li>
+ The llvm.arm.neon.vaba intrinsic (vector absolute difference and
+ accumulate) has been removed. This operation is now represented using
+ the llvm.arm.neon.vabd intrinsic (vector absolute difference) followed by a
+ vector add.
+ </li>
+ <li>
+ The llvm.arm.neon.vabdl and llvm.arm.neon.vabal intrinsics (lengthening
+ vector absolute difference with and without accumlation) have been removed.
+ They are represented using the llvm.arm.neon.vabd intrinsic (vector absolute
+ difference) followed by a vector zero-extend operation, and for vabal,
+ a vector add.
+ </li>
+ <li>
+ The llvm.arm.neon.vmovn intrinsic has been removed. Calls of this intrinsic
+ are now replaced by vector truncate operations.
+ </li>
+ <li>
+ The llvm.arm.neon.vmovls and llvm.arm.neon.vmovlu intrinsics have been
+ removed. They are now represented as vector sign-extend (vmovls) and
+ zero-extend (vmovlu) operations.
+ </li>
+ <li>
+ The llvm.arm.neon.vaddl*, llvm.arm.neon.vaddw*, llvm.arm.neon.vsubl*, and
+ llvm.arm.neon.vsubw* intrinsics (lengthening vector add and subtract) have
+ been removed. They are replaced by vector add and vector subtract operations
+ where one (vaddw, vsubw) or both (vaddl, vsubl) of the operands are either
+ sign-extended or zero-extended.
+ </li>
+ <li>
+ The llvm.arm.neon.vmulls, llvm.arm.neon.vmullu, llvm.arm.neon.vmlal*, and
+ llvm.arm.neon.vmlsl* intrinsics (lengthening vector multiply with and without
+ accumulation and subtraction) have been removed. These operations are now
+ represented as vector multiplications where the operands are either
+ sign-extended or zero-extended, followed by a vector add for vmlal or a
+ vector subtract for vmlsl. Note that the polynomial vector multiply
+ intrinsic, llvm.arm.neon.vmullp, remains unchanged.
+ </li>
+ </ol>
</li>
-
</ul>
</div>
@@ -811,7 +766,6 @@ from the previous release.</p>
renamed "Release" -> "Release+Asserts"; "Release-Asserts" -> "Release etc.
- RegisterPass<> -> INTIALIZE_PASS()
<ul>
@@ -826,6 +780,61 @@ from the previous release.</p>
<p>In addition, many APIs have changed in this release. Some of the major LLVM
API changes are:</p>
<ul>
+
+ RegisterPass<> -> INTIALIZE_PASS()
+
+
+
+<li>LLVM 2.8 changes the internal order of operands in <a
+ href="http://llvm.org/doxygen/classllvm_1_1InvokeInst.html"><tt>InvokeInst</tt></a>
+ and <a href="http://llvm.org/doxygen/classllvm_1_1CallInst.html"><tt>CallInst</tt></a>.
+ To be portable across releases, resort to <tt>CallSite</tt> and the
+ high-level accessors, such as <tt>getCalledValue</tt> and <tt>setUnwindDest</tt>.
+</li>
+<li>
+ You can no longer pass use_iterators directly to cast<> (and similar), because
+ these routines tend to perform costly dereference operations more than once. You
+ have to dereference the iterators yourself and pass them in.
+</li>
+<li>
+ llvm.memcpy.*, llvm.memset.*, llvm.memmove.* (and possibly other?) intrinsics
+ take an extra parameter now (i1 isVolatile), totaling 5 parameters.
+ If you were creating these intrinsic calls and prototypes yourself (as opposed
+ to using Intrinsic::getDeclaration), you can use UpgradeIntrinsicFunction/UpgradeIntrinsicCall
+ to be portable accross releases.
+ Note that you cannot use Intrinsic::getDeclaration() in a backwards compatible
+ way (needs 2/3 types now, in 2.7 it needed just 1).
+</li>
+<li>
+ SetCurrentDebugLocation takes a DebugLoc now instead of a MDNode.
+ Change your code to use
+ SetCurrentDebugLocation(DebugLoc::getFromDILocation(...)).
+</li>
+<li>
+ VISIBILITY_HIDDEN is gone.
+</li>
+<li>
+ The <tt>RegisterPass</tt> and <tt>RegisterAnalysisGroup</tt> templates are
+ considered deprecated, but continue to function in LLVM 2.8. Clients are
+ strongly advised to use the upcoming <tt>INITIALIZE_PASS()</tt> and
+ <tt>INITIALIZE_AG_PASS()</tt> macros instead.
+<li>
+ SMDiagnostic takes different parameters now. //FIXME: how to upgrade?
+</li>
+<li>
+ The constructor for the Triple class no longer tries to understand odd triple
+ specifications. Frontends should ensure that they only pass valid triples to
+ LLVM. The Triple::normalize utility method has been added to help front-ends
+ deal with funky triples.
+<li>
+ Some APIs got renamed:
+ <ul>
+ <li>llvm_report_error -&gt; report_fatal_error</li>
+ <li>llvm_install_error_handler -&gt; install_fatal_error_handler</li>
+ <li>llvm::DwarfExceptionHandling -&gt; llvm::JITExceptionHandling</li>
+ </ul>
+</li>
+
</ul>
</div>