========================
LLVM 8.0.0 Release Notes
========================

.. contents::
    :local:

Introduction
============

This document contains the release notes for the LLVM Compiler Infrastructure,
release 8.0.0.  Here we describe the status of LLVM, including major improvements
from the previous release, improvements in various subprojects of LLVM, and
some of the current users of the code.  All LLVM releases may be downloaded
from the `LLVM releases web site <https://llvm.org/releases/>`_.

For more information about LLVM, including information about the latest
release, please check out the `main LLVM web site <https://llvm.org/>`_.  If you
have questions or comments, the `LLVM Developer's Mailing List
<https://lists.llvm.org/mailman/listinfo/llvm-dev>`_ is a good place to send
them.

Minimum Required Compiler Version
=================================
As `discussed on the mailing list
<https://lists.llvm.org/pipermail/llvm-dev/2019-January/129452.html>`_,
building LLVM will soon require more recent toolchains as follows:

============= ====
Clang         3.5
Apple Clang   6.0
GCC           5.1
Visual Studio 2017
============= ====

A new CMake check when configuring LLVM provides a soft-error if your
toolchain will become unsupported soon. You can opt out of the soft-error by
setting the ``LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN`` CMake variable to
``ON``.


Non-comprehensive list of changes in this release
=================================================
.. NOTE
   For small 1-3 sentence descriptions, just add an entry at the end of
   this list. If your description won't fit comfortably in one bullet
   point (e.g. maybe you would like to give an example of the
   functionality, or simply have a lot to talk about), see the `NOTE` below
   for adding a new subsection.

* The **llvm-cov** tool can now export lcov trace files using the
  `-format=lcov` option of the `export` command.

* The ``add_llvm_loadable_module`` CMake macro has been removed.  The
  ``add_llvm_library`` macro with the ``MODULE`` argument now provides the same
  functionality.  See `Writing an LLVM Pass
  <WritingAnLLVMPass.html#setting-up-the-build-environment>`_.

* For MinGW, references to data variables that might need to be imported
  from a dll are accessed via a stub, to allow the linker to convert it to
  a dllimport if needed.

* Added support for labels as offsets in ``.reloc`` directive.

* Support for precise identification of X86 instructions with memory operands,
  by using debug information. This supports profile-driven cache prefetching.
  It is enabled with the ``-x86-discriminate-memops`` LLVM Flag.

* Support for profile-driven software cache prefetching on X86. This is part of
  a larger system, consisting of: an offline cache prefetches recommender,
  AutoFDO tooling, and LLVM. In this system, a binary compiled with
  ``-x86-discriminate-memops`` is run under the observation of the recommender.
  The recommender identifies certain memory access instructions by their binary
  file address, and recommends a prefetch of a specific type (NTA, T0, etc) be
  performed at a specified fixed offset from such an instruction's memory
  operand. Next, this information needs to be converted to the AutoFDO syntax
  and the resulting profile may be passed back to the compiler with the LLVM
  flag ``-prefetch-hints-file``, together with the exact same set of
  compilation parameters used for the original binary. More information is
  available in the `RFC
  <https://lists.llvm.org/pipermail/llvm-dev/2018-November/127461.html>`_.

.. NOTE
   If you would like to document a larger change, then you can add a
   subsection about it right here. You can copy the following boilerplate
   and un-indent it (the indentation causes it to be inside this comment).

   Special New Feature
   -------------------

   Makes programs 10x faster by doing Special New Thing.

Changes to the LLVM IR
----------------------

* Function attribute ``speculative_load_hardening`` has been introduced to
  allow indicating that `Speculative Load Hardening
  <SpeculativeLoadHardening.html>`_ must be enabled for the function body.


Changes to the AArch64 Target
-----------------------------

* Support for Speculative Load Hardening has been added.

* Initial support for the Tiny code model, where code and its statically
  defined symbols must live within 1MB of each other.

* Added support for the ``.arch_extension`` assembler directive, just like
  on ARM.


Changes to the ARM Backend
--------------------------

 During this release ...


Changes to the Hexagon Target
-----------------------------

* Added support for Hexagon/HVX V66 ISA.

Changes to the MIPS Target
--------------------------

* Improved support of GlobalISel instruction selection framework.

* Implemented emission of ``R_MIPS_JALR`` and ``R_MICROMIPS_JALR``
  relocations. These relocations provide hints to a linker for optimization
  of jumps to protected symbols.

* ORC JIT has been supported for MIPS and MIPS64 architectures.

* Assembler now suggests alternative MIPS instruction mnemonics when
  an invalid one is specified.

* Improved support for MIPS N32 ABI.

* Added new instructions (``pll.ps``, ``plu.ps``, ``cvt.s.pu``,
  ``cvt.s.pl``, ``cvt.ps``, ``sigrie``).

* Numerous bug fixes and code cleanups.

Changes to the PowerPC Target
-----------------------------

* Switched to non-PIC default

* Deprecated Darwin support

* Enabled Out-of-Order scheduling for P9

* Better overload rules for compatible vector type parameter

* Support constraint ‘wi’, modifier ‘x’ and VSX registers in inline asm

* More ``__float128`` support

* Added new builtins like vector int128 ``pack``/``unpack`` and
  ``stxvw4x.be``/``stxvd2x.be``

* Provided significant improvements to the automatic vectorizer

* Code-gen improvements (especially for Power9)

* Fixed some long-standing bugs in the back end

* Added experimental prologue/epilogue improvements

* Enabled builtins tests in compiler-rt

* Add ``___fixunstfti``/``floattitf`` in compiler-rt to support conversion
  between IBM double-double and unsigned int128

* Disable randomized address space when running the sanitizers on Linux ppc64le

* Completed support in LLD for ELFv2

* Enabled llvm-exegesis latency mode for PPC


Changes to the X86 Target
-------------------------

* Machine model for AMD bdver2 (Piledriver) CPU was added. It is used to support
  instruction scheduling and other instruction cost heuristics.

* New AVX512F gather and scatter intrinsics were added that take a <X x i1> mask
  instead of a scalar integer. This removes the need for a bitcast in IR. The
  new intrinsics are named like the old intrinsics with ``llvm.avx512.``
  replaced with ``llvm.avx512.mask.``. The old intrinsics will be removed in a
  future release.

* Added ``cascadelake`` as a CPU name for -march. This is ``skylake-avx512``
  with the addition of the ``avx512vnni`` instruction set.

* ADCX instruction will no longer be emitted. This instruction is rarely better
  than the legacy ADC instruction and just increased code size.

Changes to the AMDGPU Target
-----------------------------

 During this release ...

Changes to the AVR Target
-----------------------------

 During this release ...

Changes to the WebAssembly Target
---------------------------------

The WebAssembly target is no longer "experimental"! It's now built by default,
rather than needing to be enabled with LLVM_EXPERIMENTAL_TARGETS_TO_BUILD.

The object file format and core C ABI are now considered stable. That said,
the object file format has an ABI versioning capability, and one anticipated
use for it will be to add support for returning small structs as multiple
return values, once the underlying WebAssembly platform itself supports it.
Additionally, multithreading support is not yet included in the stable ABI.

Changes to the Nios2 Target
---------------------------

* The Nios2 target was removed from this release.

Changes to the OCaml bindings
-----------------------------



Changes to the C API
--------------------


Changes to the DAG infrastructure
---------------------------------

Changes to LLDB
===============
* Printed source code is now syntax highlighted in the terminal (only for C
  languages).

* The expression command now supports tab completing expressions.


External Open Source Projects Using LLVM 8
==========================================

LDC - the LLVM-based D compiler
-------------------------------

`D <http://dlang.org>`_ is a language with C-like syntax and static typing. It
pragmatically combines efficiency, control, and modeling power, with safety and
programmer productivity. D supports powerful concepts like Compile-Time Function
Execution (CTFE) and Template Meta-Programming, provides an innovative approach
to concurrency and offers many classical paradigms.

`LDC <http://wiki.dlang.org/LDC>`_ uses the frontend from the reference compiler
combined with LLVM as backend to produce efficient native code. LDC targets
x86/x86_64 systems like Linux, OS X, FreeBSD and Windows and also Linux on ARM
and PowerPC (32/64 bit). Ports to other architectures like AArch64 and MIPS64
are underway.

Zig Programming Language
------------------------

`Zig <https://ziglang.org>`_  is a system programming language intended to be
an alternative to C. It provides high level features such as generics, compile
time function execution, and partial evaluation, while exposing low level LLVM
IR features such as aliases and intrinsics. Zig uses Clang to provide automatic
import of .h symbols, including inline functions and simple macros. Zig uses
LLD combined with lazily building compiler-rt to provide out-of-the-box
cross-compiling for all supported targets.


Additional Information
======================

A wide variety of additional information is available on the `LLVM web page
<https://llvm.org/>`_, in particular in the `documentation
<https://llvm.org/docs/>`_ section.  The web page also contains versions of the
API documentation which is up-to-date with the Subversion version of the source
code.  You can access versions of these documents specific to this release by
going into the ``llvm/docs/`` directory in the LLVM tree.

If you have any questions or comments about LLVM, please feel free to contact
us via the `mailing lists <https://llvm.org/docs/#mailing-lists>`_.
