AMD software engineers continue making interesting contributions to the LLVM compiler stack around SPIR-V as the IR used by Vulkan and other Khronos APIs.
Over the past year or so AMD engineers have contributed an MLIR to SPIR-V pass for LLVM to go from that AI-friendly IR to this dominant Khronos IR, support for “vendor flavored” SPIR-V for different hardware/driver vendors, and more. Not to mention ROCm gaining SPIR-V linker support with HIP.
AMD’s grand plans for SPIR-V usage aren’t entirely clear from outside observations at a time when their ROCm efforts are beginning to pan out nicely. But in any event their support for SPIR-V as an industry-standard IR are appreciated.
Their latest contribution to upstream LLVM to note is BFloat16 support for the SPIR-V target. AMD engineer Alex Voicu contributed BFloat16 support by way of SPIR-V’s SPV_INTEL_bfloat16_arithmetic. Yes, the Intel vendor extension for BF16.
Today’s commit noted:
“[SPIRV] Enable bfloat16 arithmetic
Enable the `SPV_INTEL_bfloat16_arithmetic` extension, which allows arithmetic, relational and `OpExtInst` instructions to take `bfloat16` arguments. This patch only adds support to arithmetic and relational ops. The extension itself is rather fresh, but `bfloat16` is ubiquitous at this point and not supporting these ops is limiting.”
It’s great seeing the continued momentum behind SPIR-V/Vulkan for compute and AI across the different vendors.
The code is merged for what will become LLVM 22 in the early months of the new year.
