Show Your Support: This site is primarily supported by advertisements. Ads are what have allowed this site to be maintained on a daily basis for the past 18+ years. We do our best to ensure only clean, relevant ads are shown, when any nasty ads are detected, we work to remove them ASAP. If you would like to view the site without ads while still supporting our work, please consider our ad-free Phoronix Premium.
LLVM 16.0 Released With New Intel/AMD CPU Support, More C++20 / C2X Features
The highlights for LLVM 16 along with its sub-projects like Clang 16 and LLD 16 include the following items as catching my interest:
- Clang's default C++ standard is now GNU++17 (the GNU dialect of C++17) rather than GNU++14/C++14 as the prior default.
- More C++20 features have been implemented along with bug fixes to existing C++20 features and also making some preparations for C++2b features.
- More C2X features have also been implemented for Clang 16.0.
- Various Clang 16 compiler diagnostics improvements.
- THe LLVM 16's LLD linker has much faster link speeds for ELF objects compared to LLVM 15.
- LLVM 16 LLD also now supports Zstd compressed sections, similar to GCC 13's Zstd support.
- LLVM's LoongArch CPU back-end has been promoted out of being "experimental" and is now enabled by default. There is also initial LoongArch JITLink support and other features enabled. LLVM's LLDB debugger also supports debugging LoongArch 64-bit binaries as well as the Clang compiler support being in good shape now for this Chinese CPU architecture.
- New Intel x86 ISA extensions are supported with LLVM 16.0 including AMX-FP16, CMPCCXADD, AVX-IFMA, AVX-VNNI-INT8, and AVX-NE-CONVERT.
- New Intel CPU targets supported are Raptor Lake, Meteor Lake, Emerald Rapids, Sierra Forest, Granite Rapids, and Grand Ridge.
- Initial support for AMD Zen 4 processors with -march=znver4 but this doesn't contain the tuning that landed after the LLVM 16 branching.
- LLVM's RISC-V back-end added support for many new extensions like Zca, Zbe, Zbf, Zbm, Zbp, Zbr, and Zbt.
- LLVM added support for the Arm Cortex-A715 / Cortex-X3 / Neoverse-V2 cores.
- LLVM's AArch64 back-end now supports Function Multi-Versioning (FMV) for allowing custom code paths to be taken for optimized performance based upon the run-time CPU/capabilities.
- Support for Armv2A / Armv2A / Armv3 / Armv3M architectures has been removed.
- LLVM 16's libc++ C++ standard library has added support for more C++20 and C++23 features. Among those changes are the C++20 spaceship operator supporting more types, the C++20 ranges library has been completed, and the C++20 format library has improved.
LLVM 16.0 is available for download from GitHub in source form and various release binaries. There is also a brief release announcement on the LLVM Discourse.