LLVM Weekly - #478, February 27th 2023

LLVM Weekly - #478, February 27th 2023

If you prefer, you can read a HTML version of this email at http://llvmweekly.org/issue/478.

Welcome to the four hundred and seventy-eighth issue of LLVM Weekly, a weekly newsletter (published every Monday) covering developments in LLVM, Clang, and related projects. LLVM Weekly is brought to you by Alex Bradbury. Subscribe to future issues at http://llvmweekly.org and pass it on to anyone else you think may be interested. Please send any tips or feedback to asb@asbradbury.org, or @llvmweekly or @asbradbury on Twitter.

Readers might be interested to note I finally got round to some light updates on my blog, and kicked off some notes on publicly visible development work I’ve been doing in recent weeks.

News and articles from around the web and events

Unfortunately the Cambridge LLVM social planned for February 28th is cancelled.

The LLVM Foundation strategic planning meetings on grants on scholarships will take place today and tomorrow.

At the next online MLGO meeting on March 3rd, Yuowei Liang will present “Learning Compiler Pass Orders using Coreset and Normalized Value Prediction”.

According to the LLVM calendar in the coming week there will be:

  • Office hours with the following hosts: Quentin Colombet, Johannes Doerfert.
  • Online sync-ups on the following topics: MLIR C/C++ frontend, pointer authentication, OpenMP, Clang C/C++ language working group, Flang, RISC-V, embedded toolchains, HLSL, SPIR_V, MLGO, GPU.
  • For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.

On the forums

LLVM commits

  • Whole program devirtualisation was taught about relative vtables. db28818.

  • llvm.experimental.vector.deinterleave2 and llvm.experimental.vector.interleave2 intrinsics were introduced, with lowering also added for RISC-V. d515ecc, 8d15e72.

  • LowerTypeTests can now generate Armv6-M jump tables. a8cd35c.

  • A new pass was introduced to the RISC-V backend that initialises undef vector values to a temporary pseudo instructions in order to prevent a violation of register allocation constraints. 3b8c0b3.

  • Support was added for the vendor-specific RISC-V extensions XTHeadMemPair, XTHeadCmo, XTHeadSync, XTHeadMemIdx, XTHeadFMemIdx, XTheadCondMov, XTHeadMemPair bbb58a2, f5b484c, 16a6cf6, f626220, 7b79e8d, f68f04d, bbb58a2.

  • The nofpclass parameter attribute was introduced to LLVM IR, which can be used to indicate forbidden floating point value kinds (e.g. NaNs). 5da6744.

Clang commits

  • Clang no longer supports std::experimental::coroutine_traits and -fcoroutines-ts was removed. 55900a0, 6ed67cc.

  • There’s been more incremental progress on clang-format support for Verilog, with clang-format now putting ports on separate lines in Verilog module headers. 6e473ae.

  • clang-format gained the ability to use simple macro replacements in formatting. 0140283.

Other project commits

  • LLD will no longer error when encountering a RISC-V extension version or attribute it doesn’t recognise in the ELF attributes. ff93c9b.

  • ntohl and ntohs were implemetned in LLVM’s libc. d0d6d78.

  • MLIR’s GPU to LLVM lowerings now support emitting opaque pointers. 0e5aeae.