From 4eac9247aad81245cc849ebf850f527bae4fc60f Mon Sep 17 00:00:00 2001
From: Chris Lattner
Date: Sat, 2 Oct 2010 22:44:15 +0000
Subject: [PATCH] random updates
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115427 91177308-0d34-0410-b5e6-96231b3b80d8
---
docs/ReleaseNotes.html | 197 ++++++++++++++++++++++++++-----------------------
1 file changed, 103 insertions(+), 94 deletions(-)
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index 385e6357636..7f0628bbace 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -453,6 +453,7 @@ organization changes have happened:
- llvm-diff
+- Direct .o file writing support for darwin/x86[64].
@@ -474,56 +475,6 @@ expose new optimization opportunities:
New linker_private_weak and linker_private_weak_def_auto linkage types
Triples are now stored in normalized form. Triple::normalize.
-
-LLVM 2.8 changes the internal order of operands in InvokeInst
- and CallInst.
- To be portable across releases, resort to CallSite and the
- high-level accessors, such as getCalledValue and setUnwindDest.
-
-
- 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.
-
-
- 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).
-
-
- SetCurrentDebugLocation takes a DebugLoc now instead of a MDNode.
- Change your code to use
- SetCurrentDebugLocation(DebugLoc::getFromDILocation(...)).
-
-
- VISIBILITY_HIDDEN is gone.
-
-
- The RegisterPass and RegisterAnalysisGroup templates are
- considered deprecated, but continue to function in LLVM 2.8. Clients are
- strongly advised to use the upcoming INITIALIZE_PASS() and
- INITIALIZE_AG_PASS() macros instead.
-
- SMDiagnostic takes different parameters now. //FIXME: how to upgrade?
-
-
- 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.
-
- Some APIs got renamed:
-
- - llvm_report_error -> report_fatal_error
- - llvm_install_error_handler -> install_fatal_error_handler
- - llvm::DwarfExceptionHandling -> llvm::JITExceptionHandling
-
-
@@ -718,50 +669,54 @@ it run faster:
ARM: Half float support through intrinsics LangRef.html#int_fp16
ARMGlobalMerge:
-
- 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.
-
-
- 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.
-
-
- 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.
-
-
- The llvm.arm.neon.vmovn intrinsic has been removed. Calls of this intrinsic
- are now replaced by vector truncate operations.
-
-
- 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.
-
-
- 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.
-
-
- 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.
+The ARM NEON intrinsics have been substantially reworked to reduce
+ redundancy and improve code generation. Some of the major changes are:
+
+ -
+ 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.
+
+ -
+ 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.
+
+ -
+ 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.
+
+ -
+ The llvm.arm.neon.vmovn intrinsic has been removed. Calls of this intrinsic
+ are now replaced by vector truncate operations.
+
+ -
+ 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.
+
+ -
+ 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.
+
+ -
+ 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.
+
+
-
@@ -811,7 +766,6 @@ from the previous release.
renamed "Release" -> "Release+Asserts"; "Release-Asserts" -> "Release etc.
- RegisterPass<> -> INTIALIZE_PASS()
@@ -826,6 +780,61 @@ from the previous release.
In addition, many APIs have changed in this release. Some of the major LLVM
API changes are:
+
+ RegisterPass<> -> INTIALIZE_PASS()
+
+
+
+- LLVM 2.8 changes the internal order of operands in InvokeInst
+ and CallInst.
+ To be portable across releases, resort to CallSite and the
+ high-level accessors, such as getCalledValue and setUnwindDest.
+
+-
+ 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.
+
+-
+ 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).
+
+-
+ SetCurrentDebugLocation takes a DebugLoc now instead of a MDNode.
+ Change your code to use
+ SetCurrentDebugLocation(DebugLoc::getFromDILocation(...)).
+
+-
+ VISIBILITY_HIDDEN is gone.
+
+-
+ The RegisterPass and RegisterAnalysisGroup templates are
+ considered deprecated, but continue to function in LLVM 2.8. Clients are
+ strongly advised to use the upcoming INITIALIZE_PASS() and
+ INITIALIZE_AG_PASS() macros instead.
+
-
+ SMDiagnostic takes different parameters now. //FIXME: how to upgrade?
+
+-
+ 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.
+
-
+ Some APIs got renamed:
+
+ - llvm_report_error -> report_fatal_error
+ - llvm_install_error_handler -> install_fatal_error_handler
+ - llvm::DwarfExceptionHandling -> llvm::JITExceptionHandling
+
+
+
--
2.11.0