LLVM Weekly - #542, May 20th 2024
Welcome to the five hundred and forty-second 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, @llvmweekly or @asbradbury on Twitter, or @llvmweekly@fosstodon.org or @asb@fosstodon.org.
News and articles from around the web and events
The next Cambridge compiler social will take place on June 19th at the Computer Laboratory. Be sure to RSVP.
LLVM 18.1.6 was released. This is the last planned release for 18.1.x.
The call for papers for the tenth workshop on the LLVM compiler infrastructure in HPC is out.
According to the LLVM calendar in the coming week there will be the following:
- Office hours with the following hosts: Kristof Beyls, Johannes Doerfert.
- Online sync-ups on the following topics: SPIR-V, GlobalISel, security grop, new contributors, pointer authentication, OpenMP, Flang, RISC-V, MLIR, embedded toolchains.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Vasileios Porpodas kicked off an RFC discussion on introducing the “sandbox vectorizer”, an experimental modular vectorizer. This involves a transactional IR allowing the reversion of IR state if a transformation is found not to be profitable.
Catherine "whitequark" posted an RFC on adding support for building Clang and LLVM for WebAssembly, linking to patches implementing this.
Matthias Springer proposed a new dialect conversion driver for MLIR, detailing in depth the issues with the current dialect conversion approach (sloww, too complicated, partly undocumented restrictions, and it’s difficult to use correctly).
John Regehr shared the good news that the AArch64 translation validation fuzzer is struggling to find new miscompilation bugs.
“linuxlonelyeagle” suggested adding an memref.null operation to MLIR’s memref dialect.
Simeon is seeking feedback on adding support for recursive inlining to LLVM.
Sergio Afonso started an MLIR RFC discussion on adding a clause-based representation of OpenMP dialect operations.
Théo Degioanni proposed allowing symbol references to escape from SymbolTable in MLIR.
“Menooker” suggested adding a new MLIR dialect containing utility functions like printf. It received some pushback, with concerns that it might not be tighly scoped enough.
LLVM commits
An llvm.experimental.histogram intrinsic was added. fbb37e9.
The algorithm used to match “stale” profiles was improved. 23f8fac7.
RISCVInsertVSETVLI was moved to after phi elmination. 1a58e88.
The current status of VPlan for the loop vectorizer was documented. 99de3a6.
The LoopMicroOpBufferSize setting for Zen 3 and 4 scheduling models was reduced in order to limit the amount of partial loop unrolling performed. 54e52aa.
The pip requirements.txt in the LLVM tree now includes git hashes. 89b83d2.
update_test_checks now matches basic blocks labels using FileCheck expressions. 597ac47.
A pair of changes to the TableGen SubtargetEmitter result in substantial improvement to tblgen time for the RISC-V backend (reportedly from 29 down to 9 seconds). c675a58. 67beebf.
Clang commits
Non-constant tile sizes are now allowed in OpenMP. b0b6c16.
Work to break up the giant ‘Sema’ file up continued with SemaObjC and SemaCodeCompletion split out. 31a203f, 874f511.
RISC-V profiles that are not yet ratified are now gated behind the
-menable-experimental-extensions
flag. e5a277b, 891d687.New AArch64 intrinsics were added for bfloat16 min/max/minnm/maxnm. f7392f4.
As part of the bounds safety work, the
counted_by
attribute can now be used on pointers in structs in C. 0ec3b97.The
modernize-use-std-format
check was added, convertingabsl::StrFormat
and similar functions tostd::format
. af79372d.