@@ -50,79 +50,27 @@ Update on required toolchains to build LLVM
50
50
Changes to the LLVM IR
51
51
----------------------
52
52
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
-
75
53
Changes to LLVM infrastructure
76
54
------------------------------
77
55
78
- * Minimum Clang version to build LLVM in C++20 configuration has been updated to clang-17.0.6.
79
-
80
56
Changes to building LLVM
81
57
------------------------
82
58
83
59
Changes to TableGen
84
60
-------------------
85
61
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
-
93
62
Changes to Interprocedural Optimizations
94
63
----------------------------------------
95
64
96
65
Changes to the AArch64 Backend
97
66
------------------------------
98
67
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
-
108
68
Changes to the AMDGPU Backend
109
69
-----------------------------
110
70
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
-
120
71
Changes to the ARM Backend
121
72
--------------------------
122
73
123
- * Added support for Cortex-M52 CPUs.
124
- * Added execute-only support for Armv6-M.
125
-
126
74
Changes to the AVR Backend
127
75
--------------------------
128
76
@@ -135,21 +83,6 @@ Changes to the Hexagon Backend
135
83
Changes to the LoongArch Backend
136
84
--------------------------------
137
85
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
-
153
86
Changes to the MIPS Backend
154
87
---------------------------
155
88
@@ -159,229 +92,46 @@ Changes to the PowerPC Backend
159
92
Changes to the RISC-V Backend
160
93
-----------------------------
161
94
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
-
185
95
Changes to the WebAssembly Backend
186
96
----------------------------------
187
97
188
98
Changes to the Windows Target
189
99
-----------------------------
190
100
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
-
199
101
Changes to the X86 Backend
200
102
--------------------------
201
103
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
-
216
104
Changes to the OCaml bindings
217
105
-----------------------------
218
106
219
107
Changes to the Python bindings
220
108
------------------------------
221
109
222
- * The python bindings have been removed.
223
-
224
-
225
110
Changes to the C API
226
111
--------------------
227
112
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
-
279
113
Changes to the CodeGen infrastructure
280
114
-------------------------------------
281
115
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
-
299
116
Changes to the Metadata Info
300
117
---------------------------------
301
- * Added a new loop metadata `!{!"llvm.loop.align", i32 64} `
302
118
303
119
Changes to the Debug Info
304
120
---------------------------------
305
121
306
122
Changes to the LLVM tools
307
123
---------------------------------
308
124
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
-
322
125
Changes to LLDB
323
126
---------------------------------
324
127
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
-
362
128
Changes to Sanitizers
363
129
---------------------
364
- * HWASan now defaults to detecting use-after-scope bugs.
365
130
366
131
Other Changes
367
132
-------------
368
133
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
385
135
===========================================
386
136
387
137
* A project...
0 commit comments