2026-08-27 - HLSL Working Group Minutes
Discussion Topics
- This week in HLSL
- Ambiguous overloads
- Requests for Review
Meeting Notes
This Week in HLSL
The DirectX backend is being promoted from experimental to an official backend!
This week had 43 PRs merged in HLSL. This includes work on long vectors, dynamic resources, and various intrinsics. We also saw support for SM 6.9 added to the offload suite, more documentation migration to markdown, and work on porting GlobalISel to the new pass manager.
There were 31 new PRs opened, and there are 63 PRs currently ongoing.
For a full list of merged PRs, see the appendix.
Ambiguous Overloads
We discussed ambiguous overloads, such as max(float, int) and whether we need
to change our strategy around them. So far we’ve generally been adding
compatibility overloads in clang where we see cases that run into a lot of use,
and there wasn’t much appetite to change the approach here.
Requests for Review
There were no specific requests for review this week.
Appendix: Merged PRs
HLSL Frontend
- [HLSL][Driver][SPIRV] Add -fspv-use-legacy-buffer-matrix-order flag (llvm/llvm-project#214575)
- [HLSL][LongVec] enable dot product in the frontend (llvm/llvm-project#216418)
- Add InterlockedMin function and resource methods (llvm/llvm-project#216856)
- [HLSL][LongVec] enable support for all elementwise apis (llvm/llvm-project#216905)
- [HLSL][NFC] Refactoring in HLSLBuiltinTypeDeclBuilder and SemaHLSL (llvm/llvm-project#218511)
DirectX Backend
- [DirectX][LongVec] Support large vector splitting for dot product (llvm/llvm-project#216383)
- [DirectX] Add support for heap resources to
DXILResourceMap(llvm/llvm-project#216454) - [DirectX] Lower
llvm.dx.resource.handlefromheapintrinsic (llvm/llvm-project#216459) - [DirectX] Add shader flags for heap resources (llvm/llvm-project#216461)
- [DirectX][Scalarizer] Make sure TargetTransformInfoWrapperPass is setup (llvm/llvm-project#216893)
- [DirectX][SPIR-V] Fix
copysignbackend lowering (llvm/llvm-project#217421) - [DirectX] Remove unused heap resources (llvm/llvm-project#218093)
- [NFC][DirectX] Fix GCC 7 build failure caused by a6d7b2f5a931 (llvm/llvm-project#218297)
SPIR-V Backend
- [SPIRV] Add support for the
SPV_EXT_long_vectorextension (llvm/llvm-project#210279) - [SPIRV] Legalize byte-buffer reinterpretation ptrcasts (llvm/llvm-project#212999)
- [SPIR-V] Remove metadata-driven kernel arg Volatile decoration (llvm/llvm-project#215790)
- [SPIRV] Cleanup includes in SPIRVSubtarget.h (llvm/llvm-project#217755)
- [SPIRV][Matrix] Legalize ICmp and Fcmp (llvm/llvm-project#218467)
- [SPIR-V] Diagnose integer dot builtins without SPV_KHR_integer_dot_product (llvm/llvm-project#218599)
- [SPIRV] Fix -Wunused-variable (llvm/llvm-project#219207)
Offload Test Suite
- Modernize
InterlockedAddtests (llvm/offload-test-suite#1434) - [LongVec] Add abs signed int test (llvm/offload-test-suite#1442)
- [LongVec] Add Dot Product test cases (llvm/offload-test-suite#1445)
- Use the Direct3D 12 AgilitySDK on Windows (llvm/offload-test-suite#1452)
- Respect NuGet sources when downloading packages (llvm/offload-test-suite#1460)
- [Metal] Add support for uint32 formats (llvm/offload-test-suite#1461)
- Update xfails for
InterlockedMintests (llvm/offload-test-suite#1464) - Remove XFAIL for passing WaveActiveCountBits on QC/Vulkan (llvm/offload-test-suite#1467)
- [ci_results] Use the README for the workflow list (llvm/offload-test-suite#1473)
- Fix clang-tidy for generated sources (llvm/offload-test-suite#1474)
- Remove XFAILs that were fixed by legalizing byte buffer ptrcasts (llvm/offload-test-suite#1477)
- Drop metal xfail for interlocked add (llvm/offload-test-suite#1478)
Docs
- [docs] Rename selected PDB, DirectX, and GlobalISel docs to Markdown (llvm/llvm-project#217157)
- [docs] Finish MyST migration for PDB, DirectX, and GlobalISel docs (llvm/llvm-project#217159)
New PM
- [GISel][NewPM] Port RegBankSelect (llvm/llvm-project#217756)
- [GlobalISel][NewPM] Port InstructionSelect (llvm/llvm-project#217968)
- [GISel] Remove SPIRVInstructionSelect (llvm/llvm-project#217928)
- [SPIRV] Pass optLevel to InstructionSelect (llvm/llvm-project#217929)
- [SPIRV] Alphabetize SPIRVPassRegistry Passes (llvm/llvm-project#218199)
- [SPIRV] Mark NewPM Passes RequirePassInfoMixin (llvm/llvm-project#218202)
- [SPIRV] Move NewPM pass definitions to SPIRV.h (llvm/llvm-project#218205)
- [SPIRV] Add Pass suffix to NewPM Passes (llvm/llvm-project#218206)
- [SPIRV] Introduce CodeGenPassBuilder (llvm/llvm-project#218268)