LLVM Weekly - #529, February 19th 2024
Welcome to the five hundred and twenty-ninth 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 call for presentations for the MLIR Workshop at the EuroLLVM Developer Meeting is now up. The workshop will take place on April 9th.
The next LLVM Bay Area Monthly Meetup will take place on Monday 26th February.
The book Learn LLVM 17, Second Edition by Kai Nacke and Amy Kwan is now available.
According to the LLVM calendar in the coming week there will be:
- Office hours with the following hosts: Phoebe Wang, Johannes Doerfert.
- Online sync-ups on the following topics: Flang, pointer authentication, libc++, security group, new contributors, LLVM/Offload, C/C++ language working group, loop optimisations, floating point, OpenMP in Flang, MLIR open meeting, PowerPC, SPIR-V.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Jeff Niu kicked off an RFC discussion on adding a new region-based control-flow paradigm to MLIR which would enable early exits through operations like
break
orcontinue
. This generated a lot of feedback (largely positive), and triggered a discussion about the suitability of MLIR for representing ASTs.Tom Stellard posted a reminder that the last release candidate planned for 18.1.0 will be tagged on Tuesday.
There were a number of new GSoC 2024 project ideas shared. Rather than risk me missing some, you’re best looking at the gsoc2024 tag on Discourse.
MLIR News #62 is out.
Sriraman Tallam posted an RFC on interprocedural identical basic block folding.
The slides and recording from the last open MLIR meeting on OpenMP GPU target offloading infrastructure is now available.
Jan Schultke is seeking feedback on a C++ proposal to standardise 128-bit integers.
Haojian Wu is seeking advice on providing a non-UB way of creating objects wih vptrs via memcpy, noting this can lead to a 10% improvement on protobuf benchmarks.
Renato Golin started an MLIR RFC thread on adding a target description and cost model to MLIR.
Sergio Afonso posted an MLIR RFC on representing combined/composite constructs in the OpenMP dialect.
Aaron Ballman, Sirraide and Erich Keane authored an RFC on
__builtin_assume
and[[assume]]
optimisation behaviour. It contains a poll with three potential paths forward.
LLVM commits
A scheduling model was added for the open source XianShan-NanHu RISC-V processor. 373d9d7.
The AMDGPU backend started to gain support for “Generic Targets”, which will in the future provide a way to build once and run on multiple GPUs (though losing out on optimisation opportunities). As noted in the commit message, device libraries, runtime, loader etc support is needed. f93aa51.
Scaffolding for codegen support for Xtensa was committed. b5046a7.
An
@llvm.readsteadycounter
intrinsic was added. On targers that support it, this accesses a timer running at a fixed frequency clock. 11fcae6.The TypePromotion pass was enabled for RISC-V. 7d40ea8.
An ExpponentialBackoff helper was added to LLVM’s support library. edff3ff.
A scheduling model was added for the Ampere1B. dd1897c.
Codegen support for the experimental RISC-V Zabha extension was added. a300a1a.
A pass was added to optimise post-increment loads and stores in loops for Hexagon. 0e6a48c.
Clang commits
clangd gained support for renaming Ojective-C methods. edfc859.
Clang now always emits IR for atomics, when previously it emitted IR if it knew the operation was natively supported and libcalls otherwise. This avoids duplicating logic between the backend and frontend. 5fdd094.
std::array
fixits were added for-Wunsafe-buffer-usage
. 644ac2a.A canonicalised RISC-V ISA string will now be added as module metadata for RISC-V. This is a step to working around some issues with LTO builds. f45b9d9.
Fixed point precision macros were defined. ad49657.
Various overflow and carry builtins were implemented in the clang interpreter. 7f45acf.
Other project commits
LLD now has full support for linking SystemZ object files. fe3406e.
Initial work on an MPI dialect was added to MLIR. b334664.
BOLT now uses a new JournalingStreams struct for logging, allowing logging to be more easily modified by users of BOLT as a library. 52cf071.
LLVM’s libc started to gain documentation on C23 support. 58946ee.
The stability and versioning policy for MLIR’s bytecode format was documented. 450462c.