| Index: docs/ReleaseNotes.rst
|
| diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
|
| index 73b0abf6281d40930a15c10e7dba34b8ff855c6d..5c8ff2c0cf5d14f259387503bac1d4a366b50eae 100644
|
| --- a/docs/ReleaseNotes.rst
|
| +++ b/docs/ReleaseNotes.rst
|
| @@ -5,6 +5,12 @@ LLVM 3.3 Release Notes
|
| .. contents::
|
| :local:
|
|
|
| +.. warning::
|
| + These are in-progress notes for the upcoming LLVM 3.3 release. You may
|
| + prefer the `LLVM 3.2 Release Notes <http://llvm.org/releases/3.2/docs
|
| + /ReleaseNotes.html>`_.
|
| +
|
| +
|
| Introduction
|
| ============
|
|
|
| @@ -28,6 +34,13 @@ page <http://llvm.org/releases/>`_.
|
| Non-comprehensive list of changes in this release
|
| =================================================
|
|
|
| +.. NOTE
|
| + For small 1-3 sentence descriptions, just add an entry at the end of
|
| + this list. If your description won't fit comfortably in one bullet
|
| + point (e.g. maybe you would like to give an example of the
|
| + functionality, or simply have a lot to talk about), see the `NOTE` below
|
| + for adding a new subsection.
|
| +
|
| * The CellSPU port has been removed. It can still be found in older versions.
|
|
|
| * The IR-level extended linker APIs (for example, to link bitcode files out of
|
| @@ -57,15 +70,17 @@ Non-comprehensive list of changes in this release
|
| examples of the new syntax. The old syntax using register classes still
|
| works, but it will be removed in a future LLVM release.
|
|
|
| -* MCJIT now supports exception handling. Support for it in the old jit will be
|
| - removed in the 3.4 release.
|
| +* ... next change ...
|
| +
|
| +.. NOTE
|
| + If you would like to document a larger change, then you can add a
|
| + subsection about it right here. You can copy the following boilerplate
|
| + and un-indent it (the indentation causes it to be inside this comment).
|
|
|
| -* Command line options can now be grouped into categories which are shown in
|
| - the output of ``-help``. See :ref:`grouping options into categories`.
|
| + Special New Feature
|
| + -------------------
|
|
|
| -* The appearance of command line options in ``-help`` that are inherited by
|
| - linking with libraries that use the LLVM Command line support library can now
|
| - be modified at runtime. See :ref:`cl::getRegisteredOptions`.
|
| + Makes programs 10x faster by doing Special New Thing.
|
|
|
| AArch64 target
|
| --------------
|
| @@ -84,59 +99,9 @@ GNU-style thread local storage and inline assembly.
|
| Hexagon Target
|
| --------------
|
|
|
| -Removed support for legacy hexagonv2 and hexagonv3 processor architectures which
|
| -are no longer in use. Currently supported architectures are hexagonv4 and
|
| -hexagonv5.
|
| -
|
| -Mips target
|
| ---------------
|
| -
|
| -New features and improvements:
|
| -
|
| -- Clang driver
|
| - - Support for Sourcery CodeBench Mips toolchain directories tree.
|
| - - Support for new command line options including:
|
| - - -mxgot/-mno-xgot
|
| - - -EL / -EB
|
| - - -mmicromips / -mno-micromips
|
| - - -msingle-float / -mdouble-float
|
| - - -mabi=32 (o32 abi) and -mabi=64 (n64 abi)
|
| - - Previously, options such as -mips16, -mmicromips, -mdsp and -mdspr2 were
|
| - not passed to the assembler. This issue has been fixed.
|
| -
|
| -- A number of changes have been made to improve the quality of DSP-ASE code
|
| - generation.
|
| - - Multiply and multiply-accumulate instructions can now use all four
|
| - accumulators.
|
| - - Instruction selection patterns have been added so that DSP instructions
|
| - are emitted without having to use builtins.
|
| -
|
| -- Delay slot filler pass can now search successor blocks for instructions to
|
| - fill delay slots (use option -disable-mips-df-succbb-search=false).
|
| -
|
| -PowerPC Target
|
| ---------------
|
| -
|
| -New features and improvements:
|
| -
|
| -- PowerPC now supports an assembly parser.
|
| -- Support added for thread-local storage. 64-bit ELF subtarget only.
|
| -- Support added for medium and large code model (-mcmodel=medium,large).
|
| - Medium code model is now the default. 64-bit ELF subtarget only.
|
| -- Improved register allocation (fewer reserved registers).
|
| -- 64-bit atomic load and store are now supported.
|
| -- Improved code generation for unaligned memory accesses of scalar types.
|
| -- Improved performance of floating-point divide and square root
|
| - with -ffast-math.
|
| -- Support for predicated returns.
|
| -- Improved code generation for comparisons.
|
| -- Support added for inline setjmp and longjmp.
|
| -- Support added for many instructions introduced in PowerISA 2.04, 2.05,
|
| - and 2.06.
|
| -- Improved spill code for vector registers.
|
| -- Support added for -mno-altivec.
|
| -- ABI compatibility fixes for complex parameters, 128-bit integer parameters,
|
| - and varargs functions. 64-bit ELF subtarget only.
|
| +- Removed support for legacy hexagonv2 and hexagonv3 processor
|
| + architectures which are no longer in use. Currently supported
|
| + architectures are hexagonv4 and hexagonv5.
|
|
|
| Loop Vectorizer
|
| ---------------
|
| @@ -161,149 +126,53 @@ SLP Vectorizer
|
| --------------
|
|
|
| LLVM now has a new SLP vectorizer. The new SLP vectorizer is not enabled by
|
| -default but can be enabled using the clang flag ``-fslp-vectorize``. The
|
| -BB-vectorizer can also be enabled using the command line flag
|
| -``-fslp-vectorize-aggressive``.
|
| +default but can be enabled using the clang flag -fslp-vectorize. The BB-vectorizer
|
| +can also be enabled using the command line flag -fslp-vectorize-aggressive.
|
|
|
| R600 Backend
|
| ------------
|
|
|
| -The R600 backend was added in this release, it supports AMD GPUs (HD2XXX -
|
| -HD7XXX). This backend is used in AMD's Open Source graphics / compute drivers
|
| -which are developed as part of the `Mesa3D <http://www.mesa3d.org>`_ project.
|
| -
|
| -SystemZ/s390x Backend
|
| ----------------------
|
| -
|
| -LLVM and clang now support IBM's z/Architecture. At present this support
|
| -is restricted to GNU/Linux (GNU triplet s390x-linux-gnu) and requires
|
| -z10 or greater.
|
| -
|
| -
|
| -Sub-project Status Update
|
| -=========================
|
| -
|
| -In addition to the core LLVM 3.3 distribution of production-quality compiler
|
| -infrastructure, the LLVM project includes sub-projects that use the LLVM core
|
| -and share the same distribution license. This section provides updates on these
|
| -sub-projects.
|
| -
|
| -
|
| -DragonEgg: GCC front-ends, LLVM back-end
|
| -----------------------------------------
|
| -
|
| -`DragonEgg <http://dragonegg.llvm.org/>`_ is a
|
| -`GCC plugin <http://gcc.gnu.org/wiki/plugins>`_ that replaces GCC's optimizers
|
| -and code generators with LLVM's. It works with gcc-4.5, 4.6, 4.7 and 4.8, can
|
| -target the x86-32/x86-64 and ARM processor families, and has been successfully
|
| -used on the Darwin, FreeBSD, KFreeBSD, Linux and OpenBSD platforms. It fully
|
| -supports Ada, C, C++ and Fortran. It has partial support for Go, Java, Obj-C
|
| -and Obj-C++. Note that gcc-4.6 is the best supported version, and that Ada in
|
| -particular doesn't work well with gcc-4.7 and newer.
|
| -
|
| -The `3.3 release <http://llvm.org/apt/>`_ has the following notable changes.
|
| -
|
| -- supports gcc-4.8 (requires gcc-4.8.1 or newer)
|
| -- object files can be written directly using LLVM's integrated assembler
|
| -- produces saner debug info
|
| -- bitfields can now contain arbitrary scalar types (useful for Ada)
|
| -
|
| -
|
| -LLDB: Low Level Debugger
|
| -------------------------
|
| -
|
| -`LLDB <http://lldb.llvm.org/>`_ is a ground-up implementation of a command-line
|
| -debugger, as well as a debugger API that can be used from scripts and other
|
| -applications. LLDB uses the following components of the LLVM core distribution
|
| -to support the latest language features and target support:
|
| -
|
| -- the Clang parser for high-quality parsing of C, C++ and Objective C
|
| -- the LLVM disassembler
|
| -- the LLVM JIT compiler (MCJIT) for expression evaluation
|
| -
|
| -The `3.3 release <http://lldb.llvm.org/download.html>`_ has the following notable changes.
|
| -
|
| -Features now supported on Linux:
|
| -
|
| -- Debugging multi-threaded programs
|
| -- Support for watchpoints
|
| -- Process list, attach and fork
|
| -- `vim integration <http://llvm.org/svn/llvm-project/lldb/branches/release_33/utils/vim-lldb/README>`_ for LLDB
|
| -
|
| -Portability:
|
| -
|
| -- Builds with cmake, ninja, auto-tools, clang 3.3 and gcc 4.6
|
| -
|
| -Linux Improvements:
|
| -
|
| -- Improved register support including vector registers
|
| -- Basic debugging of i386 programs
|
| -- Bug fixes for expression evaluation
|
| +The R600 backend was added in this release, it supports AMD GPUs
|
| +(HD2XXX - HD7XXX). This backend is used in AMD's Open Source
|
| +graphics / compute drivers which are developed as part of the `Mesa3D
|
| +<http://www.mesa3d.org>`_ project.
|
|
|
|
|
| External Open Source Projects Using LLVM 3.3
|
| ============================================
|
|
|
| -An exciting aspect of LLVM is that it is used as an enabling technology for a
|
| -lot of other language and tools projects. This section lists some of the
|
| +An exciting aspect of LLVM is that it is used as an enabling technology for
|
| +a lot of other language and tools projects. This section lists some of the
|
| projects that have already been updated to work with LLVM 3.3.
|
|
|
|
|
| Portable Computing Language (pocl)
|
| ----------------------------------
|
|
|
| -In addition to producing an easily portable open source OpenCL implementation,
|
| -another major goal of `pocl <http://pocl.sourceforge.net/>`_ is improving
|
| -performance portability of OpenCL programs with compiler optimizations, reducing
|
| -the need for target-dependent manual optimizations. An important part of pocl is
|
| -a set of LLVM passes used to statically parallelize multiple work-items with the
|
| -kernel compiler, even in the presence of work-group barriers. This enables
|
| -static parallelization of the fine-grained static concurrency in the work groups
|
| -in multiple ways.
|
| +In addition to producing an easily portable open source OpenCL
|
| +implementation, another major goal of `pocl <http://pocl.sourceforge.net/>`_
|
| +is improving performance portability of OpenCL programs with
|
| +compiler optimizations, reducing the need for target-dependent manual
|
| +optimizations. An important part of pocl is a set of LLVM passes used to
|
| +statically parallelize multiple work-items with the kernel compiler, even in
|
| +the presence of work-group barriers. This enables static parallelization of
|
| +the fine-grained static concurrency in the work groups in multiple ways.
|
|
|
| TTA-based Co-design Environment (TCE)
|
| -------------------------------------
|
|
|
| -`TCE <http://tce.cs.tut.fi/>`_ is a toolset for designing new processors based
|
| -on the Transport triggered architecture (TTA). The toolset provides a complete
|
| -co-design flow from C/C++ programs down to synthesizable VHDL/Verilog and
|
| -parallel program binaries. Processor customization points include the register
|
| -files, function units, supported operations, and the interconnection network.
|
| +`TCE <http://tce.cs.tut.fi/>`_ is a toolset for designing new
|
| +processors based on the Transport triggered architecture (TTA).
|
| +The toolset provides a complete co-design flow from C/C++
|
| +programs down to synthesizable VHDL/Verilog and parallel program binaries.
|
| +Processor customization points include the register files, function units,
|
| +supported operations, and the interconnection network.
|
|
|
| TCE uses Clang and LLVM for C/C++/OpenCL C language support, target independent
|
| -optimizations and also for parts of code generation. It generates new LLVM-based
|
| -code generators "on the fly" for the designed TTA processors and loads them in
|
| -to the compiler backend as runtime libraries to avoid per-target recompilation
|
| -of larger parts of the compiler chain.
|
| -
|
| -Just-in-time Adaptive Decoder Engine (Jade)
|
| --------------------------------------------
|
| -
|
| -`Jade <https://github.com/orcc/jade>`_ (Just-in-time Adaptive Decoder Engine) is
|
| -a generic video decoder engine using LLVM for just-in-time compilation of video
|
| -decoder configurations. Those configurations are designed by MPEG Reconfigurable
|
| -Video Coding (RVC) committee. MPEG RVC standard is built on a stream-based
|
| -dataflow representation of decoders. It is composed of a standard library of
|
| -coding tools written in RVC-CAL language and a dataflow configuration --- block
|
| -diagram --- of a decoder.
|
| -
|
| -Jade project is hosted as part of the Open RVC-CAL Compiler (`Orcc
|
| -<http://orcc.sf.net>`_) and requires it to translate the RVC-CAL standard
|
| -library of video coding tools into an LLVM assembly code.
|
| -
|
| -LDC - the LLVM-based D compiler
|
| --------------------------------
|
| -
|
| -`D <http://dlang.org>`_ is a language with C-like syntax and static typing. It
|
| -pragmatically combines efficiency, control, and modeling power, with safety and
|
| -programmer productivity. D supports powerful concepts like Compile-Time Function
|
| -Execution (CTFE) and Template Meta-Programming, provides an innovative approach
|
| -to concurrency and offers many classical paradigms.
|
| -
|
| -`LDC <http://wiki.dlang.org/LDC>`_ uses the frontend from the reference compiler
|
| -combined with LLVM as backend to produce efficient native code. LDC targets
|
| -x86/x86_64 systems like Linux, OS X and Windows and also Linux/PPC64. Ports to
|
| -other architectures like ARM are underway.
|
| +optimizations and also for parts of code generation. It generates new
|
| +LLVM-based code generators "on the fly" for the designed TTA processors and
|
| +loads them in to the compiler backend as runtime libraries to avoid
|
| +per-target recompilation of larger parts of the compiler chain.
|
|
|
|
|
| Additional Information
|
|
|