X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FReleaseNotes.html;h=d2c61176fa67216220d37a5ee1b6f4cebb874bd4;hb=636e5a216c8dab7567b5e5d8d1c7d982f507f7eb;hp=f557b12389238e99ad3853ed22fb88cf3ded8306;hpb=f254836c3a4e4019639a220bad763bd046a4d388;p=oota-llvm.git diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index f557b123892..d2c61176fa6 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -4,11 +4,11 @@
-This document contains the release notes for the LLVM compiler -infrastructure, release 1.6. Here we describe the status of LLVM, including any -known problems and major improvements from the previous release. The most -up-to-date version of this document can be found on the LLVM 1.6 web site. If you are -not reading this on the LLVM web pages, you should probably go there because -this document may be updated after the release.
+infrastructure, release 2.1. Here we describe the status of LLVM, including +major improvements from the previous release and any known problems. All LLVM +releases may be downloaded from the LLVM +releases web site.For more information about LLVM, including information about the latest release, please check out the main LLVM @@ -45,10 +43,10 @@ web site. If you have questions or comments, the LLVM developer's mailing list is a good place to send them.
-Note that if you are reading this file from CVS or the main LLVM web page, -this document applies to the next release, not the current one. To see -the release notes for the current or previous releases, see the releases page.
+Note that if you are reading this file from a Subversion checkout or the +main LLVM web page, this document applies to the next release, not the +current one. To see the release notes for a specific releases, please see the +releases page.
This is the seventh public release of the LLVM Compiler Infrastructure. This -release incorporates a large number of enhancements and additions (primarily in -the code generator), which combine to improve the quality of the code generated -by LLVM by up to 30% in some cases. This release is also the first release to -have first-class support for Mac OS X: all of the major bugs have been shaken -out and it is now as well supported as Linux on X86.
+This is the twelfth public release of the LLVM Compiler Infrastructure. +It includes many features and refinements from LLVM 2.0.
LLVM now includes support for auto-generating large portions of the -instruction selectors from target descriptions. This allows us to -write patterns in the target .td file, instead of writing lots of -nasty C++ code. Most of the PowerPC instruction selector is now -generated from the PowerPC target description files and other targets -are adding support that will be live for LLVM 1.7.
-For example, here are some patterns used by the PowerPC backend. A -floating-point multiply then subtract instruction (FMSUBS):
+LLVM 2.1 brings two new beta C front-ends. First, a new version of llvm-gcc +based on GCC 4.2, innovatively called "llvm-gcc-4.2". This promises to bring +FORTRAN and Ada support to LLVM as well as features like atomic builtins and +OpenMP. None of these actually work yet, but don't let that stop you checking +it out!
--(set F4RC:$FRT, (fsub (fmul F4RC:$FRA, F4RC:$FRC), F4RC:$FRB)) -
Second, LLVM now includes its own native C and Objective-C front-end (C++ is +in progress, but is not very far along) code named "clang". This front-end has a number of great +features, primarily aimed at source-level analysis and speeding up compile-time. +At this point though, the LLVM Code Generator component is still very early in +development, so it's mostly useful for people looking to build source-level +analysis tools or source-to-source translators.
-Exclusive-or by 16-bit immediate (XORI):
+-(set GPRC:$dst, (xor GPRC:$src1, immZExt16:$src2)) -
Exclusive-or by 16-bit immediate shifted right 16-bits (XORIS):
+-(set GPRC:$dst, (xor GPRC:$src1, imm16Shifted:$src2)) -
Some of the most noticable feature improvements this release have been in the +optimizer, speeding it up and making it more aggressive. For example:
-With these definitions, we teach the code generator how to combine these two -instructions to xor an abitrary 32-bit immediate with the following -definition. The first line specifies what to match (a xor with an arbitrary -immediate) the second line specifies what to produce:
+-
def : Pat<(xor GPRC:$in, imm:$imm), - (XORIS (XORI GPRC:$in, (LO16 imm:$imm)), (HI16 imm:$imm))>; --
Instruction selectors using the refined instruction selection framework can now -use a simple pre-pass scheduler included with LLVM 1.6. This scheduler is -currently simple (cannot be configured much by the targets), but will be -extended in the future.
-One of the main focuses of this release was performance tuning and bug + fixing. In addition to these, several new major changes occurred:
- - +It is now straight-forward to parameterize a target implementation, and -provide a mapping from CPU names to sets of target parameters. LLC now supports -a -mcpu=cpu option that lets you choose a subtarget by CPU name: use -"llvm-as < /dev/null | llc -march=XXX -mcpu=help" to get a list of -supported CPUs for target "XXX". It also provides a --mattr=+attr1,-attr2 option that can be used to control individual -features of a target (the previous command will list available features as -well).
+This functionality is nice when you want tell LLC something like "compile to -code that is specialized for the PowerPC G5, but doesn't use altivec code. In -this case, using "llc -march=ppc32 -mcpu=g5 -mattr=-altivec".
+New features include: +
+ +New features include: +
+ +New features include: +
+ +New features include: +
+ +LLVM is known to work on the following platforms:
- for (i = 0; i != 1000000; ++i) { - int X[n]; - foo(X); - } -
llvm-gcc4 does not currently support Link-Time +Optimization on most platforms "out-of-the-box". Please inquire on the +llvmdev mailing list if you are interested.
+"long double" is silently transformed by the front-end into "double". There +is no support for floating point data types of any size other than 32 and 64 +bits.
llvm-gcc does not support __builtin_apply yet. + See Constructing Calls: Dispatching a call to another function.
+llvm-gcc partially supports these GCC extensions:
The following GCC extensions are partially supported. An ignored - attribute means that the LLVM compiler ignores the presence of the attribute, - but the code should still work. An unsupported attribute is one which is - ignored by the LLVM compiler and will cause a different interpretation of - the program.
- -The following extensions are known to be supported:
+llvm-gcc supports the vast majority of GCC extensions, including:
typeof
: referring to the type of an expression.void
-pointers and function pointers.For this release, the C++ front-end is considered to be fully +
The C++ front-end is considered to be fully tested and works for a number of non-trivial programs, including LLVM -itself.
- -A wide variety of additional information is available on the LLVM web page, including documentation and publications describing algorithms and -components implemented in LLVM. The web page also contains versions of the -API documentation which is up-to-date with the CVS version of the source code. +href="http://llvm.org">LLVM web page, in particular in the documentation section. The web page also +contains versions of the API documentation which is up-to-date with the +Subversion version of the source code. You can access versions of these documents specific to this release by going into the "llvm/doc/" directory in the LLVM tree.
@@ -714,7 +683,7 @@ lists.