Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Side by Side Diff: docs/ReleaseNotes.rst

Issue 183273009: Prep for merging 3.4: Undo changes from 3.3 branch (Closed) Base URL: http://git.chromium.org/native_client/pnacl-llvm.git@master
Patch Set: Retry Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « docs/LangRef.rst ('k') | include/llvm/Analysis/ScalarEvolution.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ====================== 1 ======================
2 LLVM 3.3 Release Notes 2 LLVM 3.3 Release Notes
3 ====================== 3 ======================
4 4
5 .. contents:: 5 .. contents::
6 :local: 6 :local:
7 7
8 .. warning::
9 These are in-progress notes for the upcoming LLVM 3.3 release. You may
10 prefer the `LLVM 3.2 Release Notes <http://llvm.org/releases/3.2/docs
11 /ReleaseNotes.html>`_.
12
13
8 Introduction 14 Introduction
9 ============ 15 ============
10 16
11 This document contains the release notes for the LLVM Compiler Infrastructure, 17 This document contains the release notes for the LLVM Compiler Infrastructure,
12 release 3.3. Here we describe the status of LLVM, including major improvements 18 release 3.3. Here we describe the status of LLVM, including major improvements
13 from the previous release, improvements in various subprojects of LLVM, and 19 from the previous release, improvements in various subprojects of LLVM, and
14 some of the current users of the code. All LLVM releases may be downloaded 20 some of the current users of the code. All LLVM releases may be downloaded
15 from the `LLVM releases web site <http://llvm.org/releases/>`_. 21 from the `LLVM releases web site <http://llvm.org/releases/>`_.
16 22
17 For more information about LLVM, including information about the latest 23 For more information about LLVM, including information about the latest
18 release, please check out the `main LLVM web site <http://llvm.org/>`_. If you 24 release, please check out the `main LLVM web site <http://llvm.org/>`_. If you
19 have questions or comments, the `LLVM Developer's Mailing List 25 have questions or comments, the `LLVM Developer's Mailing List
20 <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev>`_ is a good place to send 26 <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev>`_ is a good place to send
21 them. 27 them.
22 28
23 Note that if you are reading this file from a Subversion checkout or the main 29 Note that if you are reading this file from a Subversion checkout or the main
24 LLVM web page, this document applies to the *next* release, not the current 30 LLVM web page, this document applies to the *next* release, not the current
25 one. To see the release notes for a specific release, please see the `releases 31 one. To see the release notes for a specific release, please see the `releases
26 page <http://llvm.org/releases/>`_. 32 page <http://llvm.org/releases/>`_.
27 33
28 Non-comprehensive list of changes in this release 34 Non-comprehensive list of changes in this release
29 ================================================= 35 =================================================
30 36
37 .. NOTE
38 For small 1-3 sentence descriptions, just add an entry at the end of
39 this list. If your description won't fit comfortably in one bullet
40 point (e.g. maybe you would like to give an example of the
41 functionality, or simply have a lot to talk about), see the `NOTE` below
42 for adding a new subsection.
43
31 * The CellSPU port has been removed. It can still be found in older versions. 44 * The CellSPU port has been removed. It can still be found in older versions.
32 45
33 * The IR-level extended linker APIs (for example, to link bitcode files out of 46 * The IR-level extended linker APIs (for example, to link bitcode files out of
34 archives) have been removed. Any existing clients of these features should 47 archives) have been removed. Any existing clients of these features should
35 move to using a linker with integrated LTO support. 48 move to using a linker with integrated LTO support.
36 49
37 * LLVM and Clang's documentation has been migrated to the `Sphinx 50 * LLVM and Clang's documentation has been migrated to the `Sphinx
38 <http://sphinx-doc.org/>`_ documentation generation system which uses 51 <http://sphinx-doc.org/>`_ documentation generation system which uses
39 easy-to-write reStructuredText. See `llvm/docs/README.txt` for more 52 easy-to-write reStructuredText. See `llvm/docs/README.txt` for more
40 information. 53 information.
41 54
42 * TargetTransformInfo (TTI) is a new interface that can be used by IR-level 55 * TargetTransformInfo (TTI) is a new interface that can be used by IR-level
43 passes to obtain target-specific information, such as the costs of 56 passes to obtain target-specific information, such as the costs of
44 instructions. Only "Lowering" passes such as LSR and the vectorizer are 57 instructions. Only "Lowering" passes such as LSR and the vectorizer are
45 allowed to use the TTI infrastructure. 58 allowed to use the TTI infrastructure.
46 59
47 * We've improved the X86 and ARM cost model. 60 * We've improved the X86 and ARM cost model.
48 61
49 * The Attributes classes have been completely rewritten and expanded. They now 62 * The Attributes classes have been completely rewritten and expanded. They now
50 support not only enumerated attributes and alignments, but "string" 63 support not only enumerated attributes and alignments, but "string"
51 attributes, which are useful for passing information to code generation. See 64 attributes, which are useful for passing information to code generation. See
52 :doc:`HowToUseAttributes` for more details. 65 :doc:`HowToUseAttributes` for more details.
53 66
54 * TableGen's syntax for instruction selection patterns has been simplified. 67 * TableGen's syntax for instruction selection patterns has been simplified.
55 Instead of specifying types indirectly with register classes, you should now 68 Instead of specifying types indirectly with register classes, you should now
56 specify types directly in the input patterns. See ``SparcInstrInfo.td`` for 69 specify types directly in the input patterns. See ``SparcInstrInfo.td`` for
57 examples of the new syntax. The old syntax using register classes still 70 examples of the new syntax. The old syntax using register classes still
58 works, but it will be removed in a future LLVM release. 71 works, but it will be removed in a future LLVM release.
59 72
60 * MCJIT now supports exception handling. Support for it in the old jit will be 73 * ... next change ...
61 removed in the 3.4 release.
62 74
63 * Command line options can now be grouped into categories which are shown in 75 .. NOTE
64 the output of ``-help``. See :ref:`grouping options into categories`. 76 If you would like to document a larger change, then you can add a
77 subsection about it right here. You can copy the following boilerplate
78 and un-indent it (the indentation causes it to be inside this comment).
65 79
66 * The appearance of command line options in ``-help`` that are inherited by 80 Special New Feature
67 linking with libraries that use the LLVM Command line support library can now 81 -------------------
68 be modified at runtime. See :ref:`cl::getRegisteredOptions`. 82
83 Makes programs 10x faster by doing Special New Thing.
69 84
70 AArch64 target 85 AArch64 target
71 -------------- 86 --------------
72 87
73 We've added support for AArch64, ARM's 64-bit architecture. Development is still 88 We've added support for AArch64, ARM's 64-bit architecture. Development is still
74 in fairly early stages, but we expect successful compilation when: 89 in fairly early stages, but we expect successful compilation when:
75 90
76 - compiling standard compliant C99 and C++03 with Clang; 91 - compiling standard compliant C99 and C++03 with Clang;
77 - using Linux as a target platform; 92 - using Linux as a target platform;
78 - where code + static data doesn't exceed 4GB in size (heap allocated data has 93 - where code + static data doesn't exceed 4GB in size (heap allocated data has
79 no limitation). 94 no limitation).
80 95
81 Some additional functionality is also implemented, notably DWARF debugging, 96 Some additional functionality is also implemented, notably DWARF debugging,
82 GNU-style thread local storage and inline assembly. 97 GNU-style thread local storage and inline assembly.
83 98
84 Hexagon Target 99 Hexagon Target
85 -------------- 100 --------------
86 101
87 Removed support for legacy hexagonv2 and hexagonv3 processor architectures which 102 - Removed support for legacy hexagonv2 and hexagonv3 processor
88 are no longer in use. Currently supported architectures are hexagonv4 and 103 architectures which are no longer in use. Currently supported
89 hexagonv5. 104 architectures are hexagonv4 and hexagonv5.
90
91 Mips target
92 --------------
93
94 New features and improvements:
95
96 - Clang driver
97 - Support for Sourcery CodeBench Mips toolchain directories tree.
98 - Support for new command line options including:
99 - -mxgot/-mno-xgot
100 - -EL / -EB
101 - -mmicromips / -mno-micromips
102 - -msingle-float / -mdouble-float
103 - -mabi=32 (o32 abi) and -mabi=64 (n64 abi)
104 - Previously, options such as -mips16, -mmicromips, -mdsp and -mdspr2 were
105 not passed to the assembler. This issue has been fixed.
106
107 - A number of changes have been made to improve the quality of DSP-ASE code
108 generation.
109 - Multiply and multiply-accumulate instructions can now use all four
110 accumulators.
111 - Instruction selection patterns have been added so that DSP instructions
112 are emitted without having to use builtins.
113
114 - Delay slot filler pass can now search successor blocks for instructions to
115 fill delay slots (use option -disable-mips-df-succbb-search=false).
116
117 PowerPC Target
118 --------------
119
120 New features and improvements:
121
122 - PowerPC now supports an assembly parser.
123 - Support added for thread-local storage. 64-bit ELF subtarget only.
124 - Support added for medium and large code model (-mcmodel=medium,large).
125 Medium code model is now the default. 64-bit ELF subtarget only.
126 - Improved register allocation (fewer reserved registers).
127 - 64-bit atomic load and store are now supported.
128 - Improved code generation for unaligned memory accesses of scalar types.
129 - Improved performance of floating-point divide and square root
130 with -ffast-math.
131 - Support for predicated returns.
132 - Improved code generation for comparisons.
133 - Support added for inline setjmp and longjmp.
134 - Support added for many instructions introduced in PowerISA 2.04, 2.05,
135 and 2.06.
136 - Improved spill code for vector registers.
137 - Support added for -mno-altivec.
138 - ABI compatibility fixes for complex parameters, 128-bit integer parameters,
139 and varargs functions. 64-bit ELF subtarget only.
140 105
141 Loop Vectorizer 106 Loop Vectorizer
142 --------------- 107 ---------------
143 108
144 We've continued the work on the loop vectorizer. The loop vectorizer now 109 We've continued the work on the loop vectorizer. The loop vectorizer now
145 has the following features: 110 has the following features:
146 111
147 - Loops with unknown trip counts. 112 - Loops with unknown trip counts.
148 - Runtime checks of pointers. 113 - Runtime checks of pointers.
149 - Reductions, Inductions. 114 - Reductions, Inductions.
150 - Min/Max reductions of integers. 115 - Min/Max reductions of integers.
151 - If Conversion. 116 - If Conversion.
152 - Pointer induction variables. 117 - Pointer induction variables.
153 - Reverse iterators. 118 - Reverse iterators.
154 - Vectorization of mixed types. 119 - Vectorization of mixed types.
155 - Vectorization of function calls. 120 - Vectorization of function calls.
156 - Partial unrolling during vectorization. 121 - Partial unrolling during vectorization.
157 122
158 The loop vectorizer is now enabled by default for -O3. 123 The loop vectorizer is now enabled by default for -O3.
159 124
160 SLP Vectorizer 125 SLP Vectorizer
161 -------------- 126 --------------
162 127
163 LLVM now has a new SLP vectorizer. The new SLP vectorizer is not enabled by 128 LLVM now has a new SLP vectorizer. The new SLP vectorizer is not enabled by
164 default but can be enabled using the clang flag ``-fslp-vectorize``. The 129 default but can be enabled using the clang flag -fslp-vectorize. The BB-vectoriz er
165 BB-vectorizer can also be enabled using the command line flag 130 can also be enabled using the command line flag -fslp-vectorize-aggressive.
166 ``-fslp-vectorize-aggressive``.
167 131
168 R600 Backend 132 R600 Backend
169 ------------ 133 ------------
170 134
171 The R600 backend was added in this release, it supports AMD GPUs (HD2XXX - 135 The R600 backend was added in this release, it supports AMD GPUs
172 HD7XXX). This backend is used in AMD's Open Source graphics / compute drivers 136 (HD2XXX - HD7XXX). This backend is used in AMD's Open Source
173 which are developed as part of the `Mesa3D <http://www.mesa3d.org>`_ project. 137 graphics / compute drivers which are developed as part of the `Mesa3D
174 138 <http://www.mesa3d.org>`_ project.
175 SystemZ/s390x Backend
176 ---------------------
177
178 LLVM and clang now support IBM's z/Architecture. At present this support
179 is restricted to GNU/Linux (GNU triplet s390x-linux-gnu) and requires
180 z10 or greater.
181
182
183 Sub-project Status Update
184 =========================
185
186 In addition to the core LLVM 3.3 distribution of production-quality compiler
187 infrastructure, the LLVM project includes sub-projects that use the LLVM core
188 and share the same distribution license. This section provides updates on these
189 sub-projects.
190
191
192 DragonEgg: GCC front-ends, LLVM back-end
193 ----------------------------------------
194
195 `DragonEgg <http://dragonegg.llvm.org/>`_ is a
196 `GCC plugin <http://gcc.gnu.org/wiki/plugins>`_ that replaces GCC's optimizers
197 and code generators with LLVM's. It works with gcc-4.5, 4.6, 4.7 and 4.8, can
198 target the x86-32/x86-64 and ARM processor families, and has been successfully
199 used on the Darwin, FreeBSD, KFreeBSD, Linux and OpenBSD platforms. It fully
200 supports Ada, C, C++ and Fortran. It has partial support for Go, Java, Obj-C
201 and Obj-C++. Note that gcc-4.6 is the best supported version, and that Ada in
202 particular doesn't work well with gcc-4.7 and newer.
203
204 The `3.3 release <http://llvm.org/apt/>`_ has the following notable changes.
205
206 - supports gcc-4.8 (requires gcc-4.8.1 or newer)
207 - object files can be written directly using LLVM's integrated assembler
208 - produces saner debug info
209 - bitfields can now contain arbitrary scalar types (useful for Ada)
210
211
212 LLDB: Low Level Debugger
213 ------------------------
214
215 `LLDB <http://lldb.llvm.org/>`_ is a ground-up implementation of a command-line
216 debugger, as well as a debugger API that can be used from scripts and other
217 applications. LLDB uses the following components of the LLVM core distribution
218 to support the latest language features and target support:
219
220 - the Clang parser for high-quality parsing of C, C++ and Objective C
221 - the LLVM disassembler
222 - the LLVM JIT compiler (MCJIT) for expression evaluation
223
224 The `3.3 release <http://lldb.llvm.org/download.html>`_ has the following notabl e changes.
225
226 Features now supported on Linux:
227
228 - Debugging multi-threaded programs
229 - Support for watchpoints
230 - Process list, attach and fork
231 - `vim integration <http://llvm.org/svn/llvm-project/lldb/branches/release_33/ut ils/vim-lldb/README>`_ for LLDB
232
233 Portability:
234
235 - Builds with cmake, ninja, auto-tools, clang 3.3 and gcc 4.6
236
237 Linux Improvements:
238
239 - Improved register support including vector registers
240 - Basic debugging of i386 programs
241 - Bug fixes for expression evaluation
242 139
243 140
244 External Open Source Projects Using LLVM 3.3 141 External Open Source Projects Using LLVM 3.3
245 ============================================ 142 ============================================
246 143
247 An exciting aspect of LLVM is that it is used as an enabling technology for a 144 An exciting aspect of LLVM is that it is used as an enabling technology for
248 lot of other language and tools projects. This section lists some of the 145 a lot of other language and tools projects. This section lists some of the
249 projects that have already been updated to work with LLVM 3.3. 146 projects that have already been updated to work with LLVM 3.3.
250 147
251 148
252 Portable Computing Language (pocl) 149 Portable Computing Language (pocl)
253 ---------------------------------- 150 ----------------------------------
254 151
255 In addition to producing an easily portable open source OpenCL implementation, 152 In addition to producing an easily portable open source OpenCL
256 another major goal of `pocl <http://pocl.sourceforge.net/>`_ is improving 153 implementation, another major goal of `pocl <http://pocl.sourceforge.net/>`_
257 performance portability of OpenCL programs with compiler optimizations, reducing 154 is improving performance portability of OpenCL programs with
258 the need for target-dependent manual optimizations. An important part of pocl is 155 compiler optimizations, reducing the need for target-dependent manual
259 a set of LLVM passes used to statically parallelize multiple work-items with the 156 optimizations. An important part of pocl is a set of LLVM passes used to
260 kernel compiler, even in the presence of work-group barriers. This enables 157 statically parallelize multiple work-items with the kernel compiler, even in
261 static parallelization of the fine-grained static concurrency in the work groups 158 the presence of work-group barriers. This enables static parallelization of
262 in multiple ways. 159 the fine-grained static concurrency in the work groups in multiple ways.
263 160
264 TTA-based Co-design Environment (TCE) 161 TTA-based Co-design Environment (TCE)
265 ------------------------------------- 162 -------------------------------------
266 163
267 `TCE <http://tce.cs.tut.fi/>`_ is a toolset for designing new processors based 164 `TCE <http://tce.cs.tut.fi/>`_ is a toolset for designing new
268 on the Transport triggered architecture (TTA). The toolset provides a complete 165 processors based on the Transport triggered architecture (TTA).
269 co-design flow from C/C++ programs down to synthesizable VHDL/Verilog and 166 The toolset provides a complete co-design flow from C/C++
270 parallel program binaries. Processor customization points include the register 167 programs down to synthesizable VHDL/Verilog and parallel program binaries.
271 files, function units, supported operations, and the interconnection network. 168 Processor customization points include the register files, function units,
169 supported operations, and the interconnection network.
272 170
273 TCE uses Clang and LLVM for C/C++/OpenCL C language support, target independent 171 TCE uses Clang and LLVM for C/C++/OpenCL C language support, target independent
274 optimizations and also for parts of code generation. It generates new LLVM-based 172 optimizations and also for parts of code generation. It generates new
275 code generators "on the fly" for the designed TTA processors and loads them in 173 LLVM-based code generators "on the fly" for the designed TTA processors and
276 to the compiler backend as runtime libraries to avoid per-target recompilation 174 loads them in to the compiler backend as runtime libraries to avoid
277 of larger parts of the compiler chain. 175 per-target recompilation of larger parts of the compiler chain.
278
279 Just-in-time Adaptive Decoder Engine (Jade)
280 -------------------------------------------
281
282 `Jade <https://github.com/orcc/jade>`_ (Just-in-time Adaptive Decoder Engine) is
283 a generic video decoder engine using LLVM for just-in-time compilation of video
284 decoder configurations. Those configurations are designed by MPEG Reconfigurable
285 Video Coding (RVC) committee. MPEG RVC standard is built on a stream-based
286 dataflow representation of decoders. It is composed of a standard library of
287 coding tools written in RVC-CAL language and a dataflow configuration --- block
288 diagram --- of a decoder.
289
290 Jade project is hosted as part of the Open RVC-CAL Compiler (`Orcc
291 <http://orcc.sf.net>`_) and requires it to translate the RVC-CAL standard
292 library of video coding tools into an LLVM assembly code.
293
294 LDC - the LLVM-based D compiler
295 -------------------------------
296
297 `D <http://dlang.org>`_ is a language with C-like syntax and static typing. It
298 pragmatically combines efficiency, control, and modeling power, with safety and
299 programmer productivity. D supports powerful concepts like Compile-Time Function
300 Execution (CTFE) and Template Meta-Programming, provides an innovative approach
301 to concurrency and offers many classical paradigms.
302
303 `LDC <http://wiki.dlang.org/LDC>`_ uses the frontend from the reference compiler
304 combined with LLVM as backend to produce efficient native code. LDC targets
305 x86/x86_64 systems like Linux, OS X and Windows and also Linux/PPC64. Ports to
306 other architectures like ARM are underway.
307 176
308 177
309 Additional Information 178 Additional Information
310 ====================== 179 ======================
311 180
312 A wide variety of additional information is available on the `LLVM web page 181 A wide variety of additional information is available on the `LLVM web page
313 <http://llvm.org/>`_, in particular in the `documentation 182 <http://llvm.org/>`_, in particular in the `documentation
314 <http://llvm.org/docs/>`_ section. The web page also contains versions of the 183 <http://llvm.org/docs/>`_ section. The web page also contains versions of the
315 API documentation which is up-to-date with the Subversion version of the source 184 API documentation which is up-to-date with the Subversion version of the source
316 code. You can access versions of these documents specific to this release by 185 code. You can access versions of these documents specific to this release by
317 going into the ``llvm/docs/`` directory in the LLVM tree. 186 going into the ``llvm/docs/`` directory in the LLVM tree.
318 187
319 If you have any questions or comments about LLVM, please feel free to contact 188 If you have any questions or comments about LLVM, please feel free to contact
320 us via the `mailing lists <http://llvm.org/docs/#maillist>`_. 189 us via the `mailing lists <http://llvm.org/docs/#maillist>`_.
321 190
OLDNEW
« no previous file with comments | « docs/LangRef.rst ('k') | include/llvm/Analysis/ScalarEvolution.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698