A Look At The Features Coming With LLVM 7.0 & Clang 7.0

Written by Michael Larabel in LLVM on 10 September 2018 at 07:21 AM EDT. Add A Comment
LLVM
It's running a few days late, but the LLVM 7.0 release along with sub-projects like Clang 7.0 should be released very soon. Here is a look at some of the features coming to this six-month compiler infrastructure update.

Below is a look at the highlights for LLVM 7.0. Overall it's been another busy half-year with many additions to the AMDGPU back-end, the new LLVM MCA utility, continued work on the Spectre front, OpenCL C++ support is introduced, function multi-versioning (FMV) finally for Clang, OpenMP 4.5 offloading to NVIDIA NVPTX, and many other compiler infrastructure improvements.

- llvm-mca is a new tool to predict the performance of machine code on a particular CPU microarchitecture. This estimate is based upon information already within LLVM for its CPU microarchitecture targeting.

- BSD support improvements for the Undefined Behavior Sanitizer on OpenBSD, Memory Sanitizer on FreeBSD, and more.

- The LLVM Hexagon target now supports auto-vectorization for HVX with -fvectorize.

- Many MIPS target improvements including an updated P5600 CPU scheduler model, support for virtualization / Global Invalidate ASE / CRC ASE instructions, and other improvements. The new instructions can also be enabled via the crc/virt/ginv flags in Clang for MIPS.

- PowerPC now has optimized TLS code generation, a complete POWER9 scheduler model, support for the quad-precision floating point type, and other additions.

- The LLVM AMDGPU back-end has Vega 20 support, including the new deep learning instructions. There is also Vega 12 support within the 7.0 release too.

- The AMDGPU back-end also has 32-bit pointers support.

- Speculative load hardening as a Spectre Variant One mitigation feature,

On the Clang 7.0 front:

- The latest sanitizer within Clang is an Implicit Conversion Sanitizer available via -fsanitize=implicit-conversion.

- diagtool is now included with Clang, which is a Clang diagnostics tool.

- Clang now supports Function Multi-Versioning (FMV) using the the attribute target for ELF-based x86/x86_64 system. This addition is largely compatible with GCC's long-standing FMV implementation. This is great and exciting, it's one of the optimizations done by Clear Linux with their packaging to spin optimized functions for common CPU micro-architectures and that optimized code is selected at run-time based upon the CPU in use.

- Intel Tremont CPU support.

- -march=native now works on 64-bit ARM.

- Various Windows improvements.

- Various OpenCL support improvements including initial OpenCL C++ support and improvements to the existing OpenCL C support.

- Clang has support for OpenMP 4.5 offloading to the NVIDIA NVPTX target.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week