LLVM Weekly - #520, December 18th 2023
Welcome to the five hundred and twentieth 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
David Spickett wrote on the LLVM project blog about tools for learning LLVM TableGen.
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: pointer authentication, OpenMP, Clang C/C++ language working group, Flang, floating point, LLVM libc, MLIR open meeting, SPIR-V.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
There was a really detailed discussion about a proposal from Hongbin Zhang and Diego Caballero to support dynamic vector semantics (e.g. RISC-V vectors) in the MLIR vector dialect. Check the thread out for thoughts on the trade-offs of adding increasingly more types vs extending the functionality of the existing ones, specific challenges of dynamic vector types, whether to mirror LLVM’s RVV representation, and more.
Jeremy Morse sent out a call for testing to help valid on non-instruction debuginfo. I somehow missed including it last week which is a shame as this seems like a great piece of work. If you’re reading, I hope you’ll be able to spare some cycles to help test.
Johannes Doerfert shared both a llvm-project/offload roadmap and an example of portable CUDA offloading (running a CUDA kernel on an AMD GPU, falling back to CPU if not suitable GPU is found).
Jianhui Li proposed adding a XeGPU dialect for Intel GPUs.
Benjamin Maxwell kicked off an MLIR RFC on hardening the VectorType API, proposing wrappers and new builders to make it easier and safer to work with scalable dimensions.
Dayann D'almeida shared and update that an initial implementation of the llvm-cm (cost model evalution tool) proposal is now available and will be iterated on until it’s in a state it can be proposed for integration into the monorepo.
Matthias Springer notes that a new syntax for MLIR’s scf.parallel will be introduced soon.
Stella Laurenzo provided an update that ONNX import is now upstreamed into torch-mlir.
Chelsea Cassanova proposed improving LLDB’s progress reporting to allow it to provide better feedback on long-running operations.
Gulfem Savrun Yeniceri posted an RFC on single byte counters for source-based code coverage. Read the thread for a discussion of why you might not go further and aim for 1-bit counters instead if you only care about executed/not-executed.
LLVM commits
The
dead_on_unwind
attribute was added, which should be set on arguments that the caller will not ready if the call unwinds. bf5d96c.IFuncs are now supported on Darwin platforms. 640c1d3.
The code-format-helper script was improved in order to be usable as a git hook. bd3e8eb.
LLVM’s Support library gained support for Unix sockets. a5ffabc.
Operand bundles can now be manipulated from the C API. 86763a8.
A
G_PREFETCH
opcode was added to represent the llvm.prefetch intrinsic in GlobalISel. 35ebd92.GlobalISel support for the BPF backend was started. 2460bf2.
GlobalISel MatchTable entries are now 1 byte each. a110e99.
A new TargetTranformInfo hook,
preferToKeepConstantsAttached
was introduced. 930b5b5.llvm-objcopy learned to handle the
--gap-fill
and--pad-to
options. 4070dff.ThinLTO can now import a workload definition. ed10fba.
i128 is now a legal type in SystemZ vector registers. a65ccc1.
Clang commits
The
[[clang::suppress]]
attribute was added to suppress warnings from the Clang static analyser. ef3f476.-fms-volatile
can now be used as an alias to/volatile:ms
. d871919.A parser bug was fixed for
operator<() {}
. 9512d6d.
Other project commits
LLD now has a
--initial-heap
option for WebAssembly in order to preallocate a certain number of pages in the linear memory. b2cdf3c.lldb-dap now allows commands to be prefixed with
?
(prevents the output to be printed to the console unless it fails) and/or!
(aborts the dap if the command fails). aa20767.Support was added for building LLVM’s libc with scudo for riscv64. 2c0abdf.
std::find was optimised for segmented iterators. f740741.
LLVM’s OpenMP library can now be compiled to WebAssembly. As noted in the commit message, this is just a starting point with more work to be done. 68ea91d.