[AMDGPU] Test codegen'ing True16 additions.
[llvm-project.git] / llvm / docs / ReleaseNotes.rst
blob660bb4e70a5a707c8d6122329f29f613267cfd23
1 ============================
2 LLVM |release| Release Notes
3 ============================
5 .. contents::
6     :local:
8 .. only:: PreRelease
10   .. warning::
11      These are in-progress notes for the upcoming LLVM |version| release.
12      Release notes for previous releases can be found on
13      `the Download Page <https://releases.llvm.org/download.html>`_.
16 Introduction
17 ============
19 This document contains the release notes for the LLVM Compiler Infrastructure,
20 release |release|.  Here we describe the status of LLVM, including major improvements
21 from the previous release, improvements in various subprojects of LLVM, and
22 some of the current users of the code.  All LLVM releases may be downloaded
23 from the `LLVM releases web site <https://llvm.org/releases/>`_.
25 For more information about LLVM, including information about the latest
26 release, please check out the `main LLVM web site <https://llvm.org/>`_.  If you
27 have questions or comments, the `Discourse forums
28 <https://discourse.llvm.org>`_ is a good place to ask
29 them.
31 Note that if you are reading this file from a Git checkout or the main
32 LLVM web page, this document applies to the *next* release, not the current
33 one.  To see the release notes for a specific release, please see the `releases
34 page <https://llvm.org/releases/>`_.
36 Non-comprehensive list of changes in this release
37 =================================================
38 .. NOTE
39    For small 1-3 sentence descriptions, just add an entry at the end of
40    this list. If your description won't fit comfortably in one bullet
41    point (e.g. maybe you would like to give an example of the
42    functionality, or simply have a lot to talk about), see the `NOTE` below
43    for adding a new subsection.
45 * ...
47 Update on required toolchains to build LLVM
48 -------------------------------------------
50 Changes to the LLVM IR
51 ----------------------
53 * The `llvm.stacksave` and `llvm.stackrestore` intrinsics now use
54   an overloaded pointer type to support non-0 address spaces.
55 * The constant expression variants of the following instructions have been
56   removed:
58   * ``and``
59   * ``or``
61 * Added `llvm.exp10` intrinsic.
63 Changes to LLVM infrastructure
64 ------------------------------
66 Changes to building LLVM
67 ------------------------
69 Changes to TableGen
70 -------------------
72 Changes to Interprocedural Optimizations
73 ----------------------------------------
75 Changes to the AArch64 Backend
76 ------------------------------
78 Changes to the AMDGPU Backend
79 -----------------------------
81 * `llvm.sqrt.f32` is now lowered correctly. Use `llvm.amdgcn.sqrt.f32`
82   for raw instruction access.
84 * Implemented `llvm.stacksave` and `llvm.stackrestore` intrinsics.
86 * Implemented :ref:`llvm.get.rounding <int_get_rounding>`
88 Changes to the ARM Backend
89 --------------------------
91 Changes to the AVR Backend
92 --------------------------
94 Changes to the DirectX Backend
95 ------------------------------
97 Changes to the Hexagon Backend
98 ------------------------------
100 Changes to the LoongArch Backend
101 --------------------------------
103 Changes to the MIPS Backend
104 ---------------------------
106 Changes to the PowerPC Backend
107 ------------------------------
109 Changes to the RISC-V Backend
110 -----------------------------
112 * Zihintntl extension version was upgraded to 1.0 and is no longer experimental.
114 Changes to the WebAssembly Backend
115 ----------------------------------
117 Changes to the Windows Target
118 -----------------------------
120 * The LLVM filesystem class ``UniqueID`` and function ``equivalent()``
121   no longer determine that distinct different path names for the same
122   hard linked file actually are equal. This is an intentional tradeoff in a
123   bug fix, where the bug used to cause distinct files to be considered
124   equivalent on some file systems. This change fixed the issues
125   https://github.com/llvm/llvm-project/issues/61401 and
126   https://github.com/llvm/llvm-project/issues/22079.
128 Changes to the X86 Backend
129 --------------------------
131 Changes to the OCaml bindings
132 -----------------------------
134 Changes to the Python bindings
135 ------------------------------
137 * The python bindings have been removed.
140 Changes to the C API
141 --------------------
143 * Added ``LLVMGetTailCallKind`` and ``LLVMSetTailCallKind`` to
144   allow getting and setting ``tail``, ``musttail``, and ``notail``
145   attributes on call instructions.
146 * The following functions for creating constant expressions have been removed,
147   because the underlying constant expressions are no longer supported. Instead,
148   an instruction should be created using the ``LLVMBuildXYZ`` APIs, which will
149   constant fold the operands if possible and create an instruction otherwise:
151   * ``LLVMConstAnd``
152   * ``LLVMConstOr``
154 Changes to the CodeGen infrastructure
155 -------------------------------------
157 * ``PrologEpilogInserter`` no longer supports register scavenging
158   during forwards frame index elimination. Targets should use
159   backwards frame index elimination instead.
161 * ``RegScavenger`` no longer supports forwards register
162   scavenging. Clients should use backwards register scavenging
163   instead, which is preferred because it does not depend on accurate
164   kill flags.
166 Changes to the Metadata Info
167 ---------------------------------
169 Changes to the Debug Info
170 ---------------------------------
172 Changes to the LLVM tools
173 ---------------------------------
175 * llvm-symbolizer now treats invalid input as an address for which source
176   information is not found.
177 * llvm-readelf now supports ``--extra-sym-info`` (``-X``) to display extra
178   information (section name) when showing symbols.
180 * ``llvm-nm`` now supports the ``--line-numbers`` (``-l``) option to use
181   debugging information to print symbols' filenames and line numbers.
183 Changes to LLDB
184 ---------------------------------
186 * Methods in SBHostOS related to threads have had their implementations
187   removed. These methods will return a value indicating failure.
189 Changes to Sanitizers
190 ---------------------
191 * HWASan now defaults to detecting use-after-scope bugs.
193 Other Changes
194 -------------
196 * The ``Flags`` field of ``llvm::opt::Option`` has been split into ``Flags``
197   and ``Visibility`` to simplify option sharing between various drivers (such
198   as ``clang``, ``clang-cl``, or ``flang``) that rely on Clang's Options.td.
199   Overloads of ``llvm::opt::OptTable`` that use ``FlagsToInclude`` have been
200   deprecated. There is a script and instructions on how to resolve conflicts -
201   see https://reviews.llvm.org/D157150 and https://reviews.llvm.org/D157151 for
202   details.
204 * On Linux, FreeBSD, and NetBSD, setting the environment variable
205   ``LLVM_ENABLE_SYMBOLIZER_MARKUP`` causes tools to print stacktraces using
206   :doc:`Symbolizer Markup <SymbolizerMarkupFormat>`.
207   This works even if the tools have no embedded symbol information (i.e. are
208   fully stripped); :doc:`llvm-symbolizer <CommandGuide/llvm-symbolizer>` can
209   symbolize the markup afterwards using ``debuginfod``.
211 External Open Source Projects Using LLVM 15
212 ===========================================
214 * A project...
216 Additional Information
217 ======================
219 A wide variety of additional information is available on the `LLVM web page
220 <https://llvm.org/>`_, in particular in the `documentation
221 <https://llvm.org/docs/>`_ section.  The web page also contains versions of the
222 API documentation which is up-to-date with the Git version of the source
223 code.  You can access versions of these documents specific to this release by
224 going into the ``llvm/docs/`` directory in the LLVM tree.
226 If you have any questions or comments about LLVM, please feel free to contact
227 us via the `Discourse forums <https://discourse.llvm.org>`_.