@@ -50,79 +50,27 @@ Update on required toolchains to build LLVM
5050Changes to the LLVM IR
5151----------------------
5252
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:
57-
58- * ``and ``
59- * ``or ``
60- * ``lshr ``
61- * ``ashr ``
62- * ``zext ``
63- * ``sext ``
64- * ``fptrunc ``
65- * ``fpext ``
66- * ``fptoui ``
67- * ``fptosi ``
68- * ``uitofp ``
69- * ``sitofp ``
70-
71- * Added `llvm.exp10 ` intrinsic.
72-
73- * Added a ``code_model `` attribute for the `global variable <LangRef.html#global-variables >`_.
74-
7553Changes to LLVM infrastructure
7654------------------------------
7755
78- * Minimum Clang version to build LLVM in C++20 configuration has been updated to clang-17.0.6.
79-
8056Changes to building LLVM
8157------------------------
8258
8359Changes to TableGen
8460-------------------
8561
86- * Added constructs for debugging TableGen files:
87-
88- * `dump ` keyword to dump messages to standard error, see
89- https://github.com/llvm/llvm-project/pull/68793.
90- * `!repr ` bang operator to inspect the content of values, see
91- https://github.com/llvm/llvm-project/pull/68716.
92-
9362Changes to Interprocedural Optimizations
9463----------------------------------------
9564
9665Changes to the AArch64 Backend
9766------------------------------
9867
99- * Added support for Cortex-A520, Cortex-A720 and Cortex-X4 CPUs.
100-
101- * Neoverse-N2 was incorrectly marked as an Armv8.5a core. This has been
102- changed to an Armv9.0a core. However, crypto options are not enabled
103- by default for Armv9 cores, so `-mcpu=neoverse-n2+crypto ` is now required
104- to enable crypto for this core. As far as the compiler is concerned,
105- Armv9.0a has the same features enabled as Armv8.5a, with the exception
106- of crypto.
107-
10868Changes to the AMDGPU Backend
10969-----------------------------
11070
111- * `llvm.sqrt.f32 ` is now lowered correctly. Use `llvm.amdgcn.sqrt.f32 `
112- for raw instruction access.
113-
114- * Implemented `llvm.stacksave ` and `llvm.stackrestore ` intrinsics.
115-
116- * Implemented :ref: `llvm.get.rounding <int_get_rounding >`
117-
118- * The default :ref: `AMDHSA code object version <amdgpu-amdhsa-code-object-metadata-v5 >` is now 5.
119-
12071Changes to the ARM Backend
12172--------------------------
12273
123- * Added support for Cortex-M52 CPUs.
124- * Added execute-only support for Armv6-M.
125-
12674Changes to the AVR Backend
12775--------------------------
12876
@@ -135,21 +83,6 @@ Changes to the Hexagon Backend
13583Changes to the LoongArch Backend
13684--------------------------------
13785
138- * Added intrinsics support for all LSX (128-bits SIMD) and LASX (256-bits SIMD)
139- instructions.
140- * Added definition and intrinsics support for new instructions that were
141- introduced in LoongArch Reference Manual V1.10.
142- * Emitted adjacent ``pcaddu18i+jirl `` instrunction sequence with one relocation
143- ``R_LARCH_CALL36 `` instead of ``pcalau12i+jirl `` with two relocations
144- ``R_LARCH_PCALA_{HI20,LO12} `` for function call in medium code model.
145- * The code model of global variables can now be overridden by means of the newly
146- added LLVM IR attribute, ``code_model ``.
147- * Added support for the ``llvm.is.fpclass `` intrinsic.
148- * ``mulodi4 `` and ``muloti4 `` libcalls were disabled due to absence in libgcc.
149- * Added initial support for auto vectorization.
150- * Added initial support for linker relaxation.
151- * Assorted codegen improvements.
152-
15386Changes to the MIPS Backend
15487---------------------------
15588
@@ -159,229 +92,46 @@ Changes to the PowerPC Backend
15992Changes to the RISC-V Backend
16093-----------------------------
16194
162- * The Zfa extension version was upgraded to 1.0 and is no longer experimental.
163- * Zihintntl extension version was upgraded to 1.0 and is no longer experimental.
164- * Intrinsics were added for Zk*, Zbb, and Zbc. See https://github.com/riscv-non-isa/riscv-c-api-doc/blob/master/riscv-c-api.md#scalar-bit-manipulation-extension-intrinsics
165- * Default ABI with F but without D was changed to ilp32f for RV32 and to lp64f for RV64.
166- * The Zvbb, Zvbc, Zvkb, Zvkg, Zvkn, Zvknc, Zvkned, Zvkng, Zvknha, Zvknhb, Zvks,
167- Zvksc, Zvksed, Zvksg, Zvksh, and Zvkt extension version was upgraded to 1.0
168- and is no longer experimental. However, the C intrinsics for these extensions
169- are still experimental. To use the C intrinsics for these extensions,
170- ``-menable-experimental-extensions `` needs to be passed to Clang.
171- * XSfcie extension and SiFive CSRs and instructions that were associated with
172- it have been removed. None of these CSRs and instructions were part of
173- "SiFive Custom Instruction Extension" as SiFive defines it. The LLVM project
174- needs to work with SiFive to define and document real extension names for
175- individual CSRs and instructions.
176- * ``-mcpu=sifive-p450 `` was added.
177- * CodeGen of RV32E/RV64E was supported experimentally.
178- * CodeGen of ilp32e/lp64e was supported experimentally.
179- * Support was added for the Ziccif, Ziccrse, Ziccamoa, Zicclsm, Za64rs, Za128rs
180- and Zic64b extensions which were introduced as a part of the RISC-V Profiles
181- specification.
182- * The Smepmp 1.0 extension is now supported.
183- * ``-mcpu=sifive-p670 `` was added.
184-
18595Changes to the WebAssembly Backend
18696----------------------------------
18797
18898Changes to the Windows Target
18999-----------------------------
190100
191- * The LLVM filesystem class ``UniqueID `` and function ``equivalent() ``
192- no longer determine that distinct different path names for the same
193- hard linked file actually are equal. This is an intentional tradeoff in a
194- bug fix, where the bug used to cause distinct files to be considered
195- equivalent on some file systems. This change fixed the issues
196- https://github.com/llvm/llvm-project/issues/61401 and
197- https://github.com/llvm/llvm-project/issues/22079.
198-
199101Changes to the X86 Backend
200102--------------------------
201103
202- * The ``i128 `` type now matches GCC and clang's ``__int128 `` type. This mainly
203- benefits external projects such as Rust which aim to be binary compatible
204- with C, but also fixes code generation where LLVM already assumed that the
205- type matched and called into libgcc helper functions.
206- * Support ISA of ``USER_MSR ``.
207- * Support ISA of ``AVX10.1-256 `` and ``AVX10.1-512 ``.
208- * ``-mcpu=pantherlake `` and ``-mcpu=clearwaterforest `` are now supported.
209- * ``-mapxf `` is supported.
210- * Marking global variables with ``code_model = "small"/"large" `` in the IR now
211- overrides the global code model to allow 32-bit relocations or require 64-bit
212- relocations to the global variable.
213- * The medium code model's code generation was audited to be more similar to the
214- small code model where possible.
215-
216104Changes to the OCaml bindings
217105-----------------------------
218106
219107Changes to the Python bindings
220108------------------------------
221109
222- * The python bindings have been removed.
223-
224-
225110Changes to the C API
226111--------------------
227112
228- * Added ``LLVMGetTailCallKind `` and ``LLVMSetTailCallKind `` to
229- allow getting and setting ``tail ``, ``musttail ``, and ``notail ``
230- attributes on call instructions.
231- * The following functions for creating constant expressions have been removed,
232- because the underlying constant expressions are no longer supported. Instead,
233- an instruction should be created using the ``LLVMBuildXYZ `` APIs, which will
234- constant fold the operands if possible and create an instruction otherwise:
235-
236- * ``LLVMConstAnd ``
237- * ``LLVMConstOr ``
238- * ``LLVMConstLShr ``
239- * ``LLVMConstAShr ``
240- * ``LLVMConstZExt ``
241- * ``LLVMConstSExt ``
242- * ``LLVMConstZExtOrBitCast ``
243- * ``LLVMConstSExtOrBitCast ``
244- * ``LLVMConstIntCast ``
245- * ``LLVMConstFPTrunc ``
246- * ``LLVMConstFPExt ``
247- * ``LLVMConstFPToUI ``
248- * ``LLVMConstFPToSI ``
249- * ``LLVMConstUIToFP ``
250- * ``LLVMConstSIToFP ``
251- * ``LLVMConstFPCast ``
252-
253- * Added ``LLVMCreateTargetMachineWithOptions ``, along with helper functions for
254- an opaque option structure, as an alternative to ``LLVMCreateTargetMachine ``.
255- The option structure exposes an additional setting (i.e., the target ABI) and
256- provides default values for unspecified settings.
257-
258- * Added ``LLVMGetNNeg `` and ``LLVMSetNNeg `` for getting/setting the new nneg flag
259- on zext instructions, and ``LLVMGetIsDisjoint `` and ``LLVMSetIsDisjoint ``
260- for getting/setting the new disjoint flag on or instructions.
261-
262- * Added the following functions for manipulating operand bundles, as well as
263- building ``call `` and ``invoke `` instructions that use operand bundles:
264-
265- * ``LLVMBuildCallWithOperandBundles ``
266- * ``LLVMBuildInvokeWithOperandBundles ``
267- * ``LLVMCreateOperandBundle ``
268- * ``LLVMDisposeOperandBundle ``
269- * ``LLVMGetNumOperandBundles ``
270- * ``LLVMGetOperandBundleAtIndex ``
271- * ``LLVMGetNumOperandBundleArgs ``
272- * ``LLVMGetOperandBundleArgAtIndex ``
273- * ``LLVMGetOperandBundleTag ``
274-
275- * Added ``LLVMGetFastMathFlags `` and ``LLVMSetFastMathFlags `` for getting/setting
276- the fast-math flags of an instruction, as well as ``LLVMCanValueUseFastMathFlags ``
277- for checking if an instruction can use such flags
278-
279113Changes to the CodeGen infrastructure
280114-------------------------------------
281115
282- * A new debug type ``isel-dump `` is added to show only the SelectionDAG dumps
283- after each ISel phase (i.e. ``-debug-only=isel-dump ``). This new debug type
284- can be filtered by function names using ``-filter-print-funcs=<function names> ``,
285- the same flag used to filter IR dumps after each Pass. Note that the existing
286- ``-debug-only=isel `` will take precedence over the new behavior and
287- print SelectionDAG dumps of every single function regardless of
288- ``-filter-print-funcs ``'s values.
289-
290- * ``PrologEpilogInserter `` no longer supports register scavenging
291- during forwards frame index elimination. Targets should use
292- backwards frame index elimination instead.
293-
294- * ``RegScavenger `` no longer supports forwards register
295- scavenging. Clients should use backwards register scavenging
296- instead, which is preferred because it does not depend on accurate
297- kill flags.
298-
299116Changes to the Metadata Info
300117---------------------------------
301- * Added a new loop metadata `!{!"llvm.loop.align", i32 64} `
302118
303119Changes to the Debug Info
304120---------------------------------
305121
306122Changes to the LLVM tools
307123---------------------------------
308124
309- * llvm-symbolizer now treats invalid input as an address for which source
310- information is not found.
311- * llvm-readelf now supports ``--extra-sym-info `` (``-X ``) to display extra
312- information (section name) when showing symbols.
313-
314- * ``llvm-nm `` now supports the ``--line-numbers `` (``-l ``) option to use
315- debugging information to print symbols' filenames and line numbers.
316-
317- * llvm-symbolizer and llvm-addr2line now support addresses specified as symbol names.
318-
319- * llvm-objcopy now supports ``--gap-fill `` and ``--pad-to `` options, for
320- ELF input and binary output files only.
321-
322125Changes to LLDB
323126---------------------------------
324127
325- * ``SBWatchpoint::GetHardwareIndex `` is deprecated and now returns -1
326- to indicate the index is unavailable.
327- * Methods in SBHostOS related to threads have had their implementations
328- removed. These methods will return a value indicating failure.
329- * ``SBType::FindDirectNestedType `` function is added. It's useful
330- for formatters to quickly find directly nested type when it's known
331- where to search for it, avoiding more expensive global search via
332- ``SBTarget::FindFirstType ``.
333- * ``lldb-vscode `` was renamed to ``lldb-dap `` and and its installation
334- instructions have been updated to reflect this. The underlying functionality
335- remains unchanged.
336- * The ``mte_ctrl `` register can now be read from AArch64 Linux core files.
337- * LLDB on AArch64 Linux now supports debugging the Scalable Matrix Extension
338- (SME) and Scalable Matrix Extension 2 (SME2) for both live processes and core
339- files. For details refer to the
340- `AArch64 Linux documentation <https://lldb.llvm.org/use/aarch64-linux.html >`_.
341- * LLDB now supports symbol and binary acquisition automatically using the
342- DEBUFINFOD protocol. The standard mechanism of specifying DEBUFINOD servers in
343- the ``DEBUGINFOD_URLS `` environment variable is used by default. In addition,
344- users can specify servers to request symbols from using the LLDB setting
345- ``plugin.symbol-locator.debuginfod.server_urls ``, override or adding to the
346- environment variable.
347-
348-
349- * When running on AArch64 Linux, ``lldb-server `` now provides register
350- field information for the following registers: ``cpsr ``, ``fpcr ``,
351- ``fpsr ``, ``svcr `` and ``mte_ctrl ``. ::
352-
353- (lldb) register read cpsr
354- cpsr = 0x80001000
355- = (N = 1, Z = 0, C = 0, V = 0, SS = 0, IL = 0, <...>
356-
357- This is only available when ``lldb `` is built with XML support.
358- Where possible the CPU's capabilities are used to decide which
359- fields are present, however this is not always possible or entirely
360- accurate. If in doubt, refer to the numerical value.
361-
362128Changes to Sanitizers
363129---------------------
364- * HWASan now defaults to detecting use-after-scope bugs.
365130
366131Other Changes
367132-------------
368133
369- * The ``Flags `` field of ``llvm::opt::Option `` has been split into ``Flags ``
370- and ``Visibility `` to simplify option sharing between various drivers (such
371- as ``clang ``, ``clang-cl ``, or ``flang ``) that rely on Clang's Options.td.
372- Overloads of ``llvm::opt::OptTable `` that use ``FlagsToInclude `` have been
373- deprecated. There is a script and instructions on how to resolve conflicts -
374- see https://reviews.llvm.org/D157150 and https://reviews.llvm.org/D157151 for
375- details.
376-
377- * On Linux, FreeBSD, and NetBSD, setting the environment variable
378- ``LLVM_ENABLE_SYMBOLIZER_MARKUP `` causes tools to print stacktraces using
379- :doc: `Symbolizer Markup <SymbolizerMarkupFormat >`.
380- This works even if the tools have no embedded symbol information (i.e. are
381- fully stripped); :doc: `llvm-symbolizer <CommandGuide/llvm-symbolizer >` can
382- symbolize the markup afterwards using ``debuginfod ``.
383-
384- External Open Source Projects Using LLVM 15
134+ External Open Source Projects Using LLVM 19
385135===========================================
386136
387137* A project...
0 commit comments