diff options
author | Chris Lattner <sabre@nondot.org> | 2010-10-02 22:44:15 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-10-02 22:44:15 +0000 |
commit | c5a94ae137b0af4545baf1ed0e48bc4147f50567 (patch) | |
tree | 351550c598e4707c2b52f09fe114d5fc905956c2 /docs | |
parent | 072c0c0add70a2b0f041e04144b9c53df782c2b6 (diff) | |
download | external_llvm-c5a94ae137b0af4545baf1ed0e48bc4147f50567.zip external_llvm-c5a94ae137b0af4545baf1ed0e48bc4147f50567.tar.gz external_llvm-c5a94ae137b0af4545baf1ed0e48bc4147f50567.tar.bz2 |
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.html | 197 |
1 files changed, 103 insertions, 94 deletions
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index 385e635..7f0628b 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 -> report_fatal_error</li> - <li>llvm_install_error_handler -> install_fatal_error_handler</li> - <li>llvm::DwarfExceptionHandling -> 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 -> report_fatal_error</li> + <li>llvm_install_error_handler -> install_fatal_error_handler</li> + <li>llvm::DwarfExceptionHandling -> llvm::JITExceptionHandling</li> + </ul> +</li> + </ul> </div> |