@@ -5,12 +5,6 @@ LLVM 6.0.0 Release Notes
5
5
.. contents ::
6
6
:local:
7
7
8
- .. warning ::
9
- These are in-progress notes for the upcoming LLVM 6 release.
10
- Release notes for previous releases can be found on
11
- `the Download Page <http://releases.llvm.org/download.html >`_.
12
-
13
-
14
8
Introduction
15
9
============
16
10
@@ -26,19 +20,14 @@ have questions or comments, the `LLVM Developer's Mailing List
26
20
<http://lists.llvm.org/mailman/listinfo/llvm-dev> `_ is a good place to send
27
21
them.
28
22
29
- Note that if you are reading this file from a Subversion checkout or the main
30
- LLVM web page, this document applies to the *next * release, not the current
31
- one. To see the release notes for a specific release, please see the `releases
32
- page <http://llvm.org/releases/> `_.
33
-
34
23
Non-comprehensive list of changes in this release
35
24
=================================================
36
- .. NOTE
37
- For small 1-3 sentence descriptions, just add an entry at the end of
38
- this list. If your description won't fit comfortably in one bullet
39
- point (e.g. maybe you would like to give an example of the
40
- functionality, or simply have a lot to talk about), see the `NOTE` below
41
- for adding a new subsection .
25
+
26
+ * Support for ` retpolines < https://support.google.com/faqs/answer/7625886 >`_
27
+ was added to help mitigate "branch target injection" (variant #2) of the
28
+ "Spectre" speculative side channels described by ` Project Zero
29
+ <https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html> `_
30
+ and the ` Spectre paper < https://spectreattack.com/spectre.pdf >`_ .
42
31
43
32
* The ``Redirects `` argument of ``llvm::sys::ExecuteAndWait `` and
44
33
``llvm::sys::ExecuteNoWait `` was changed to an ``ArrayRef `` of optional
@@ -56,34 +45,33 @@ Non-comprehensive list of changes in this release
56
45
57
46
* Significantly improved quality of CodeView debug info for Windows.
58
47
59
- * Note..
48
+ * Preliminary support for Sanitizers and sibling features on X86(_64) NetBSD
49
+ (ASan, UBsan, TSan, MSan, SafeStack, libFuzzer).
60
50
61
- .. NOTE
62
- If you would like to document a larger change, then you can add a
63
- subsection about it right here. You can copy the following boilerplate
64
- and un-indent it (the indentation causes it to be inside this comment).
65
-
66
- Special New Feature
67
- -------------------
68
-
69
- Makes programs 10x faster by doing Special New Thing.
70
51
71
52
Changes to the LLVM IR
72
53
----------------------
73
54
55
+ * The fast-math-flags (FMF) have been updated. Previously, the 'fast' flag
56
+ indicated that floating-point reassociation was allowed and all other flags
57
+ were set too. The 'fast' flag still exists, but there is a new flag called
58
+ 'reassoc' to indicate specifically that reassociation is allowed. A new bit
59
+ called 'afn' was also added to selectively allow approximations for common
60
+ mathlib functions like square-root. The new flags provide more flexibility
61
+ to enable/disable specific floating-point optimizations. Making the
62
+ optimizer respond appropriately to these flags is an ongoing effort.
63
+
64
+
74
65
Changes to the AArch64 Target
75
66
-----------------------------
76
67
77
- During this release:
68
+ * Enabled the new GlobalISel instruction selection framework by default at `` -O0 ``.
78
69
79
- * Enabled the new GlobalISel instruction selection framework by default at ``-O0 ``.
80
70
81
71
Changes to the ARM Target
82
72
-------------------------
83
73
84
- During this release the ARM target has:
85
-
86
- * Got support for enabling SjLj exception handling on platforms where it
74
+ * Support for enabling SjLj exception handling on platforms where it
87
75
isn't the default.
88
76
89
77
@@ -92,12 +80,12 @@ Changes to the Hexagon Target
92
80
93
81
* The Hexagon backend now supports V65 ISA.
94
82
95
- * The ``-mhvx `` option now takes an optional value that specified the ISA
83
+ * The ``-mhvx `` option now takes an optional value that specifies the ISA
96
84
version of the HVX coprocessor. The available values are v60, v62 and v65.
97
85
By default, the value is set to be the same as the CPU version.
98
86
99
87
* The compiler option ``-mhvx-double `` is deprecated and will be removed in
100
- the next release of the compiler. Programmers should use ``-mhvx-length ``
88
+ the next release of the compiler. Programmers should use the ``-mhvx-length ``
101
89
option to specify the desired vector length: ``-mhvx-length=64b `` for
102
90
64-byte vectors and ``-mhvx-length=128b `` for 128-byte vectors. While the
103
91
current default vector length is 64 bytes, users should always specify the
@@ -112,14 +100,46 @@ Changes to the Hexagon Target
112
100
Changes to the MIPS Target
113
101
--------------------------
114
102
115
- During this release ...
103
+ Fixed numerous bugs:
104
+
105
+ * fpowi on MIPS64 giving incorrect results when used with a negative integer.
106
+ * Usage of the asm 'c' constraint with the wrong datatype causing an
107
+ assert/crash.
108
+ * Fixed a conversion bug when using the DSP ASE.
109
+ * Fixed an inconsistency where objects were not marked as using the microMIPS as
110
+ when the micromips function attribute or the ".set micromips" directive was
111
+ used.
112
+ * Reordered the MIPSR6 specific hazard scheduler pass to after the delay slot
113
+ filler, fixing a class of rare edge case bugs where the delay slot filler
114
+ would violate ISA restrictions.
115
+ * Fixed a crash when using a type of unknown size with gp relative addressing.
116
+ * Corrected the j macro for microMIPS.
117
+ * Corrected the encoding of movep for microMIPS32r6.
118
+ * Fixed an issue with the usage of insert instructions having an invalid set of
119
+ operands.
120
+ * Fixed an issue where TLS symbols were not marked as such.
121
+ * Enabled the usage of register scavenging with MSA, due to its shorter offsets
122
+ for loads and stores.
123
+ * Corrected the ELF headers when using the DSP ASE.
124
+
125
+ New features:
126
+
127
+ * The long branch pass now generates some R6 specific instructions when
128
+ targeting MIPSR6.
129
+ * The delay slot filler now performs more branch conversions if delay slots
130
+ cannot be filled.
131
+ * The MIPS MT ASE is now fully supported.
132
+ * Added support for the ``lapc `` pseudo instruction.
133
+ * Improved the selection of multiple instructions (``dext ``, ``nmadd ``,
134
+ ``nmsub ``).
135
+ * Further improved microMIPS codesize reduction.
136
+
137
+ Deprecation notices:
138
+
139
+ * microMIPS64R6 support was been deprecated since 5.0, and has now been
140
+ completely removed.
116
141
117
142
118
- Changes to the PowerPC Target
119
- -----------------------------
120
-
121
- During this release ...
122
-
123
143
Changes to the SystemZ Target
124
144
-----------------------------
125
145
@@ -132,36 +152,66 @@ During this release the SystemZ target has:
132
152
Changes to the X86 Target
133
153
-------------------------
134
154
135
- During this release ...
155
+ During this release the X86 target has:
136
156
137
- * Got support for enabling SjLj exception handling on platforms where it
157
+ * Added support for enabling SjLj exception handling on platforms where it
138
158
isn't the default.
139
159
140
- Changes to the AMDGPU Target
141
- -----------------------------
160
+ * Added intrinsics for Intel Extensions: VAES, GFNI, VPCLMULQDQ, AVX512VBMI2, AVX512BITALG, AVX512VNNI.
142
161
143
- During this release .. .
162
+ * Added support for Intel Icelake CPU .
144
163
145
- Changes to the AVR Target
146
- -----------------------------
164
+ * Fixed some X87 codegen bugs.
147
165
148
- During this release .. .
166
+ * Added instruction scheduling information for Intel Sandy Bridge, Ivy Bridge, Haswell, Broadwell, and Skylake CPUs .
149
167
150
- Changes to the OCaml bindings
151
- -----------------------------
168
+ * Improved scheduler model for AMD Jaguar CPUs.
169
+
170
+ * Improved llvm-mc's disassembler for some EVEX encoded instructions.
171
+
172
+ * Add support for i8 and i16 vector signed/unsigned min/max horizontal reductions.
173
+
174
+ * Improved codegen for memory comparisons
175
+
176
+ * Improved codegen for i32 vector multiplies
177
+
178
+ * Improved codegen for scalar integer absolute values
179
+
180
+ * Improved codegen for vector integer rotations (XOP and AVX512)
152
181
153
- During this release .. .
182
+ * Improved codegen of data being transferred between GPRs and K-registers .
154
183
184
+ * Improved codegen for vector truncations.
155
185
156
- Changes to the C API
157
- --------------------
186
+ * Improved folding of address computations into gather/scatter instructions.
158
187
159
- During this release ...
188
+ * Gained initial support recognizing variable shuffles from vector element extracts and inserts.
189
+
190
+ * Improved documentation for SSE/AVX intrinsics in intrin.h header files.
191
+
192
+ * Gained support for emitting `retpolines
193
+ <https://support.google.com/faqs/answer/7625886> `_, including automatic
194
+ insertion of the necessary thunks or using external thunks.
160
195
161
196
162
197
External Open Source Projects Using LLVM 6
163
198
==========================================
164
199
200
+ LDC - the LLVM-based D compiler
201
+ -------------------------------
202
+
203
+ `D <http://dlang.org >`_ is a language with C-like syntax and static typing. It
204
+ pragmatically combines efficiency, control, and modeling power, with safety and
205
+ programmer productivity. D supports powerful concepts like Compile-Time Function
206
+ Execution (CTFE) and Template Meta-Programming, provides an innovative approach
207
+ to concurrency and offers many classical paradigms.
208
+
209
+ `LDC <http://wiki.dlang.org/LDC >`_ uses the frontend from the reference compiler
210
+ combined with LLVM as backend to produce efficient native code. LDC targets
211
+ x86/x86_64 systems like Linux, OS X, FreeBSD and Windows and also Linux on ARM
212
+ and PowerPC (32/64 bit). Ports to other architectures like AArch64 and MIPS64
213
+ are underway.
214
+
165
215
JFS - JIT Fuzzing Solver
166
216
------------------------
167
217
@@ -188,21 +238,6 @@ import of .h symbols - even inline functions and macros. Zig uses LLD combined
188
238
with lazily building compiler-rt to provide out-of-the-box cross-compiling for
189
239
all supported targets.
190
240
191
- LDC - the LLVM-based D compiler
192
- -------------------------------
193
-
194
- `D <http://dlang.org >`_ is a language with C-like syntax and static typing. It
195
- pragmatically combines efficiency, control, and modeling power, with safety and
196
- programmer productivity. D supports powerful concepts like Compile-Time Function
197
- Execution (CTFE) and Template Meta-Programming, provides an innovative approach
198
- to concurrency and offers many classical paradigms.
199
-
200
- `LDC <http://wiki.dlang.org/LDC >`_ uses the frontend from the reference compiler
201
- combined with LLVM as backend to produce efficient native code. LDC targets
202
- x86/x86_64 systems like Linux, OS X, FreeBSD and Windows and also Linux on ARM
203
- and PowerPC (32/64 bit). Ports to other architectures like AArch64 and MIPS64
204
- are underway.
205
-
206
241
Additional Information
207
242
======================
208
243
0 commit comments