• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1=========================
2LLVM 12.0.0 Release Notes
3=========================
4
5.. contents::
6    :local:
7
8.. warning::
9   These are in-progress notes for the upcoming LLVM 12 release.
10   Release notes for previous releases can be found on
11   `the Download Page <https://releases.llvm.org/download.html>`_.
12
13
14Introduction
15============
16
17This document contains the release notes for the LLVM Compiler Infrastructure,
18release 12.0.0.  Here we describe the status of LLVM, including major improvements
19from the previous release, improvements in various subprojects of LLVM, and
20some of the current users of the code.  All LLVM releases may be downloaded
21from the `LLVM releases web site <https://llvm.org/releases/>`_.
22
23For more information about LLVM, including information about the latest
24release, please check out the `main LLVM web site <https://llvm.org/>`_.  If you
25have questions or comments, the `LLVM Developer's Mailing List
26<https://lists.llvm.org/mailman/listinfo/llvm-dev>`_ is a good place to send
27them.
28
29Note that if you are reading this file from a Git checkout or the main
30LLVM web page, this document applies to the *next* release, not the current
31one.  To see the release notes for a specific release, please see the `releases
32page <https://llvm.org/releases/>`_.
33
34Non-comprehensive list of changes in this release
35=================================================
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.
42
43* The ConstantPropagation pass was removed. Users should use the InstSimplify
44  pass instead.
45
46
47.. NOTE
48   If you would like to document a larger change, then you can add a
49   subsection about it right here. You can copy the following boilerplate
50   and un-indent it (the indentation causes it to be inside this comment).
51
52   Special New Feature
53   -------------------
54
55   Makes programs 10x faster by doing Special New Thing.
56
57
58Changes to the LLVM IR
59----------------------
60
61* ...
62
63* Added the ``byref`` attribute to better represent argument passing
64  for the `amdgpu_kernel` calling convention.
65
66* Added type parameter to the ``sret`` attribute to continue work on
67  removing pointer element types.
68
69* The ``llvm.experimental.vector.reduce`` family of intrinsics have been renamed
70  to drop the "experimental" from the name, reflecting their now fully supported
71  status in the IR.
72
73
74Changes to building LLVM
75------------------------
76
77* The internal ``llvm-build`` Python script and the associated ``LLVMBuild.txt``
78  files used to describe the LLVM component structure have been removed and
79  replaced by a pure ``CMake`` approach, where each component stores extra
80  properties in the created targets. These properties are processed once all
81  components are defined to resolve library dependencies and produce the header
82  expected by llvm-config.
83
84Changes to TableGen
85-------------------
86
87* The new "TableGen Programmer's Reference" replaces the "TableGen Language
88  Introduction" and "TableGen Language Reference" documents.
89
90* The syntax for specifying an integer range in a range list has changed.
91  The old syntax used a hyphen in the range (e.g., ``{0-9}``). The new syntax
92  uses the "`...`" range punctuation (e.g., ``{0...9}``). The hyphen syntax
93  is deprecated.
94
95Changes to the ARM Backend
96--------------------------
97
98During this release ...
99
100Changes to the MIPS Target
101--------------------------
102
103During this release ...
104
105
106Changes to the PowerPC Target
107-----------------------------
108
109During this release ...
110
111Changes to the X86 Target
112-------------------------
113
114During this release ...
115
116* The 'mpx' feature was removed from the backend. It had been removed from clang
117  frontend in 10.0. Mention of the 'mpx' feature in an IR file will print a
118  message to stderr, but IR should still compile.
119* Support for ``-march=alderlake``, ``-march=sapphirerapids``,
120  ``-march=znver3`` and ``-march=x86-64-v[234]`` has been added.
121* The assembler now has support for {disp32} and {disp8} pseudo prefixes for
122  controlling displacement size for memory operands and jump displacements. The
123  assembler also supports the .d32 and .d8 mnemonic suffixes to do the same.
124* A new function attribute "tune-cpu" has been added to support -mtune like gcc.
125  This allows microarchitectural optimizations to be applied independent from
126  the "target-cpu" attribute or TargetMachine CPU which will be used to select
127  Instruction Set. If the attribute is not present, the tune CPU will follow
128  the target CPU.
129* Support for ``HRESET`` instructions has been added.
130* Support for ``UINTR`` instructions has been added.
131* Support for ``AVXVNNI`` instructions has been added.
132
133Changes to the AMDGPU Target
134-----------------------------
135
136During this release ...
137
138* The new ``byref`` attribute is now the preferred method for
139  representing aggregate kernel arguments.
140
141Changes to the AVR Target
142-----------------------------
143
144During this release ...
145
146Changes to the WebAssembly Target
147---------------------------------
148
149During this release ...
150
151Changes to the OCaml bindings
152-----------------------------
153
154
155Changes to the C API
156--------------------
157
158
159Changes to the Go bindings
160--------------------------
161
162
163Changes to the DAG infrastructure
164---------------------------------
165
166
167Changes to the Debug Info
168---------------------------------
169
170During this release ...
171
172Changes to the LLVM tools
173---------------------------------
174
175* llvm-readobj and llvm-readelf behavior has changed to report an error when
176  executed with no input files instead of reading an input from stdin.
177  Reading from stdin can still be achieved by specifying `-` as an input file.
178
179Changes to LLDB
180---------------------------------
181
182Changes to Sanitizers
183---------------------
184
185The integer sanitizer `-fsanitize=integer` now has a new sanitizer:
186`-fsanitize=unsigned-shift-base`. It's not undefined behavior for an unsigned
187left shift to overflow (i.e. to shift bits out), but it has been the source of
188bugs and exploits in certain codebases in the past.
189
190External Open Source Projects Using LLVM 12
191===========================================
192
193* A project...
194
195Additional Information
196======================
197
198A wide variety of additional information is available on the `LLVM web page
199<https://llvm.org/>`_, in particular in the `documentation
200<https://llvm.org/docs/>`_ section.  The web page also contains versions of the
201API documentation which is up-to-date with the Git version of the source
202code.  You can access versions of these documents specific to this release by
203going into the ``llvm/docs/`` directory in the LLVM tree.
204
205If you have any questions or comments about LLVM, please feel free to contact
206us via the `mailing lists <https://llvm.org/docs/#mailing-lists>`_.
207