diff options
Diffstat (limited to 'llvm/docs/ReleaseNotes.rst')
-rw-r--r-- | llvm/docs/ReleaseNotes.rst | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/llvm/docs/ReleaseNotes.rst b/llvm/docs/ReleaseNotes.rst index 3b374e2c613d..4434a9663ac1 100644 --- a/llvm/docs/ReleaseNotes.rst +++ b/llvm/docs/ReleaseNotes.rst @@ -47,71 +47,12 @@ Non-comprehensive list of changes in this release Update on required toolchains to build LLVM ------------------------------------------- -With LLVM 15.x we will raise the version requirements of the toolchain used -to build LLVM. The new requirements are as follows: - -* GCC >= 7.1 -* Clang >= 5.0 -* Apple Clang >= 9.3 -* Visual Studio 2019 >= 16.7 - -In LLVM 15.x these requirements will be "soft" requirements and the version -check can be skipped by passing -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON -to CMake. - -With the release of LLVM 16.x these requirements will be hard and LLVM developers -can start using C++17 features, making it impossible to build with older -versions of these toolchains. - Changes to the LLVM IR ---------------------- -* LLVM now uses `opaque pointers <OpaquePointers.html>`__. This means that - different pointer types like ``i8*``, ``i32*`` or ``void()**`` are now - represented as a single ``ptr`` type. See the linked document for migration - instructions. -* Renamed ``llvm.experimental.vector.extract`` intrinsic to ``llvm.vector.extract``. -* Renamed ``llvm.experimental.vector.insert`` intrinsic to ``llvm.vector.insert``. -* The constant expression variants of the following instructions have been - removed: - * ``extractvalue`` - * ``insertvalue`` - * ``udiv`` - * ``sdiv`` - * ``urem`` - * ``srem`` - * ``fadd`` - * ``fsub`` - * ``fmul`` - * ``fdiv`` - * ``frem`` -* Added the support for ``fmax`` and ``fmin`` in ``atomicrmw`` instruction. The - comparison is expected to match the behavior of ``llvm.maxnum.*`` and - ``llvm.minnum.*`` respectively. -* ``callbr`` instructions no longer use ``blockaddress`` arguments for labels. - Instead, label constraints starting with ``!`` refer directly to entries in - the ``callbr`` indirect destination list. - -.. code-block:: llvm - - ; Old representation - %res = callbr i32 asm "", "=r,r,i"(i32 %x, i8 *blockaddress(@foo, %indirect)) - to label %fallthrough [label %indirect] - ; New representation - %res = callbr i32 asm "", "=r,r,!i"(i32 %x) - to label %fallthrough [label %indirect] - Changes to building LLVM ------------------------ -* Omitting ``CMAKE_BUILD_TYPE`` when using a single configuration generator is now - an error. You now have to pass ``-DCMAKE_BUILD_TYPE=<type>`` in order to configure - LLVM. This is done to help new users of LLVM select the correct type: since building - LLVM in Debug mode is very resource intensive, we want to make sure that new users - make the choice that lines up with their usage. We have also improved documentation - around this setting that should help new users. You can find this documentation - `here <https://llvm.org/docs/CMake.html#cmake-build-type>`_. - Changes to TableGen ------------------- @@ -121,28 +62,9 @@ Changes to the AArch64 Backend Changes to the AMDGPU Backend ----------------------------- -* 8 and 16-bit atomic loads and stores are now supported - - Changes to the ARM Backend -------------------------- -* Added support for the Armv9-A, Armv9.1-A and Armv9.2-A architectures. -* Added support for the Armv8.1-M PACBTI-M extension. -* Added support for the Armv9-A, Armv9.1-A and Armv9.2-A architectures. -* Added support for the Armv8.1-M PACBTI-M extension. -* Removed the deprecation of ARMv8-A T32 Complex IT blocks. No deprecation - warnings will be generated and -mrestrict-it is now always off by default. - Previously it was on by default for Armv8 and off for all other architecture - versions. -* Added a pass to workaround Cortex-A57 Erratum 1742098 and Cortex-A72 - Erratum 1655431. This is enabled by default when targeting either CPU. -* Implemented generation of Windows SEH unwind information. -* Switched the MinGW target to use SEH instead of DWARF for unwind information. -* Added support for the Cortex-M85 CPU. -* Added support for a new -mframe-chain=(none|aapcs|aapcs+leaf) command-line - option, which controls the generation of AAPCS-compliant Frame Records. - Changes to the AVR Backend -------------------------- @@ -151,13 +73,6 @@ Changes to the AVR Backend Changes to the DirectX Backend ------------------------------ -* DirectX has been added as an experimental target. Specify - ``-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX`` in your CMake configuration - to enable it. The target is not packaged in pre-built binaries. -* The DirectX backend supports the ``dxil`` architecture which is based on LLVM - 3.6 IR encoded as bitcode and is the format used for DirectX GPU Shader - programs. - Changes to the Hexagon Backend ------------------------------ @@ -176,8 +91,6 @@ Changes to the PowerPC Backend Changes to the RISC-V Backend ----------------------------- -* The Zvfh extension was added. - Changes to the WebAssembly Backend ---------------------------------- @@ -186,9 +99,6 @@ Changes to the WebAssembly Backend Changes to the X86 Backend -------------------------- -* Support ``half`` type on SSE2 and above targets. -* Support ``rdpru`` instruction on Zen2 and above targets. - Changes to the OCaml bindings ----------------------------- @@ -196,57 +106,6 @@ Changes to the OCaml bindings Changes to the C API -------------------- -* Add ``LLVMGetCastOpcode`` function to aid users of ``LLVMBuildCast`` in - resolving the best cast operation given a source value and destination type. - This function is a direct wrapper of ``CastInst::getCastOpcode``. - -* Add ``LLVMGetAggregateElement`` function as a wrapper for - ``Constant::getAggregateElement``, which can be used to fetch an element of a - constant struct, array or vector, independently of the underlying - representation. The ``LLVMGetElementAsConstant`` function is deprecated in - favor of the new function, which works on all constant aggregates, rather than - only instances of ``ConstantDataSequential``. - -* The following functions for creating constant expressions have been removed, - because the underlying constant expressions are no longer supported. Instead, - an instruction should be created using the ``LLVMBuildXYZ`` APIs, which will - constant fold the operands if possible and create an instruction otherwise: - * ``LLVMConstExtractValue`` - * ``LLVMConstInsertValue`` - * ``LLVMConstUDiv`` - * ``LLVMConstExactUDiv`` - * ``LLVMConstSDiv`` - * ``LLVMConstExactSDiv`` - * ``LLVMConstURem`` - * ``LLVMConstSRem`` - * ``LLVMConstFAdd`` - * ``LLVMConstFSub`` - * ``LLVMConstFMul`` - * ``LLVMConstFDiv`` - * ``LLVMConstFRem`` - -* Add ``LLVMDeleteInstruction`` function which allows deleting instructions that - are not inserted into a basic block. - -* As part of the opaque pointer migration, the following APIs are deprecated and - will be removed in the next release: - * ``LLVMBuildLoad`` -> ``LLVMBuildLoad2`` - * ``LLVMBuildCall`` -> ``LLVMBuildCall2`` - * ``LLVMBuildInvoke`` -> ``LLVMBuildInvoke2`` - * ``LLVMBuildGEP`` -> ``LLVMBuildGEP2`` - * ``LLVMBuildInBoundsGEP`` -> ``LLVMBuildInBoundsGEP2`` - * ``LLVMBuildStructGEP`` -> ``LLVMBuildStructGEP2`` - * ``LLVMBuildPtrDiff`` -> ``LLVMBuildPtrDiff2`` - * ``LLVMConstGEP`` -> ``LLVMConstGEP2`` - * ``LLVMConstInBoundsGEP`` -> ``LLVMConstInBoundsGEP2`` - * ``LLVMAddAlias`` -> ``LLVMAddAlias2`` - -* Refactor compression namespaces across the project, making way for a possible - introduction of alternatives to zlib compression in the llvm toolchain. - Changes are as follows: - * Relocate the ``llvm::zlib`` namespace to ``llvm::compression::zlib``. - * Remove crc32 from zlib compression namespace, people should use the ``llvm::crc32`` instead. - Changes to the Go bindings -------------------------- @@ -274,50 +133,15 @@ During this release ... Changes to the LLVM tools --------------------------------- -* (Experimental) :manpage:`llvm-symbolizer(1)` now has ``--filter-markup`` to - filter :doc:`Symbolizer Markup </SymbolizerMarkupFormat>` into human-readable - form. -* :doc:`llvm-objcopy <CommandGuide/llvm-objcopy>` has removed support for the legacy ``zlib-gnu`` format. -* :doc:`llvm-objcopy <CommandGuide/llvm-objcopy>` now allows ``--set-section-flags src=... --rename-section src=tst``. - ``--add-section=.foo1=... --rename-section=.foo1=.foo2`` now adds ``.foo1`` instead of ``.foo2``. -* The LLVM gold plugin now ignores bitcode from the ``.llvmbc`` section of ELF - files when doing LTO. https://github.com/llvm/llvm-project/issues/47216 - Changes to LLDB --------------------------------- -* The "memory region" command now has a "--all" option to list all - memory regions (including unmapped ranges). This is the equivalent - of using address 0 then repeating the command until all regions - have been listed. -* Added "--show-tags" option to the "memory find" command. This is off by default. - When enabled, if the target value is found in tagged memory, the tags for that - memory will be shown inline with the memory contents. -* Various memory related parts of LLDB have been updated to handle - non-address bits (such as AArch64 pointer signatures): - - * "memory read", "memory write" and "memory find" can now be used with - addresses with non-address bits. - * All the read and write memory methods on SBProccess and SBTarget can - be used with addreses with non-address bits. - * When printing a pointer expression, LLDB can now dereference the result - even if it has non-address bits. - * The memory cache now ignores non-address bits when looking up memory - locations. This prevents us reading locations multiple times, or not - writing out new values if the addresses have different non-address bits. - -* LLDB now supports reading memory tags from AArch64 Linux core files. - Changes to Sanitizers --------------------- Other Changes ------------- -* The code for the `LLVM Visual Studio integration - <https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.llvm-toolchain>`_ - has been removed. This had been obsolete and abandoned since Visual Studio - started including an integration by default in 2019. External Open Source Projects Using LLVM 15 =========================================== |