2026-07-23 - HLSL Working Group Minutes
Discussion Topics
- This week in HLSL
- Separating compile-only A/B testing in the offload suite
- Offload testing on SPIR-V precheckin CI
- Structured GEP and ongoing matrix issues
- Google summer of code RFC for clangd in HLSL
- Review requests: llvm/llvm-project#207768
Meeting Notes
This Week in HLSL
We saw 39 PRs merged, 18 new PRs opened, and have 61 PRs ongoing. The HLSL frontend had a variety of changes across diagnostics, resources, and semantics; DirectX received further improvements to DXContainer and debug support; SPIR-V saw various legalization and lowering improvements; and the offload test suite had a number of tests added or enabled.
For a full list of merged PRs, see the appendix.
Separating compile-only A/B testing in the offload suite
Justin asked whether creating a separate compile-only subdirectory in the
offload test suite specifically for A/B testing clang vs dxc is worthwhile.
This would allow us to easily disable these for cases where we’re only
validating a single compiler, and would also allow us to save some overhead
when running this kind of test. As an example, this could include the various
root signature tests that use obj2yaml for validation today.
There were no objections to this idea.
Offload testing on SPIR-V precheckin CI
Farzon suggested we talk to the maintainers of the SPIR-V precheckin bots to enable the offload test suite there. This would save the team some time and back and forth from the current flow where we generally XFAIL offload tests in response to changes and follow up later.
We generally agreed this is a good idea and we should discuss with the maintainers of the SPIR-V specific CI.
Structured GEP and ongoing matrix issues
Farzon pointed out that some of the matrix layout issues we were hoping to resolve with the structured GEP work, such as llvm/llvm-project#176995, are still problems despite some of that work having gone in and purportedly fixing them.
Justin to follow up as part of taking on the remaining structured GEP work.
Google Summer of Code RFC for clangd in HLSL
Finn wanted to highlight that our GSOC contributor Maria, who has been working on trying to bring HLSL support to clangd, has posted an RFC: https://discourse.llvm.org/t/rfc-improving-hlsl-support-in-clangd/91359
Any engagement and feedback is appreciated.
Review requests
- Farzon would like a second review on llvm/llvm-project#207768
Appendix: Merged PRs
HLSL Frontend
- [clang] Update diagnostics to include matrices as accepted types (llvm/llvm-project#201237)
- [HLSL][Docs] Add metadata description of semantic signatures (llvm/llvm-project#206804)
- [HLSL] Enable frontend IR generation for SPIR-V in TypedBuffers-constructor.hlsl (llvm/llvm-project#207421)
- [HLSL] Implement RWTexture2DArray (llvm/llvm-project#208725)
- [HLSL][SPIRV] Support Flat and Location decorators in the frontend (llvm/llvm-project#210116)
- [HLSL] Add IsMultiSampled HLSL resource attribute (llvm/llvm-project#211125)
- [HLSL] Move sema tests out of ParserHLSL into SemaHLSL/Attributes (llvm/llvm-project#211353)
DirectX Backend
- [docs][tools][DirectX] Document DXContainer debug info parts (llvm/llvm-project#204021)
- [DirectX] Add slim debug support (llvm/llvm-project#204459)
- [Driver][DirectX] Add
/Qstrip_debugflag (llvm/llvm-project#204832) - [DirectX][Driver] Add /Qpdb_in_private flag support (llvm/llvm-project#204903)
- [DirectX][MC] Fix dangling StringRefs in DXContainerWriterTest (llvm/llvm-project#211227)
SPIR-V Backend
- [SPIRV] Lower llvm.ldexp via OpenCL/GLSL ldexp ext-inst (llvm/llvm-project#195402)
- [SPIR-V] Handle bfloat in getZeroFP/getOneFP (llvm/llvm-project#202859)
- [SPIRV] Emit NonSemantic DebugGlobalVariable (llvm/llvm-project#207230)
- [SPIRV][NFCI] Refactor selection of atomic operations with pointer operands (llvm/llvm-project#208294)
- [SPIR-V] Reject fp128 and ppc_fp128 types with a diagnostic (llvm/llvm-project#208397)
- [SPIRV] Pack 64-bit vec2 typed buffers into 4x32-bit images (llvm/llvm-project#208626)
- [SPIR-V] Preserve signed i1 semantics in sitofp (llvm/llvm-project#209232)
- [SPIR-V] Erase dead functions in shader modules (llvm/llvm-project#209672)
- [SPIRV] Support switch terminators when merging region exits (llvm/llvm-project#209859)
- [SPIRV] Fix legalization of widened cbuffer vector loads (llvm/llvm-project#209912)
- [SPIR-V][NewPM] Register SPIRVStructurizer with the new pass manager (llvm/llvm-project#209965)
- [SPIR-V][NewPM] Fix SPIRVEmitIntrinsics registration with the new pass manager (llvm/llvm-project#209966)
- [SPIR-V] Simplify lookup of llvm.global.annotations using getNamedGlobal (llvm/llvm-project#210722)
- [NFC][SPIR-V] Merge duplicate prefix/suffix switches in lookupBuiltin (llvm/llvm-project#211194)
- [SPIR-V] Cache PartialOrderingVisitor in Splitter instead of rebuilding per call (llvm/llvm-project#211198)
- [NFC][SPIR-V] Reuse PartialOrderingVisitor across sortSelectionMerge calls (llvm/llvm-project#211200)
Offload Test Suite
- Add local resources tests (llvm/offload-test-suite#1090)
- [DX][AMD] Mark world-ray-echo.test as XFAIL on AMD DX12. (llvm/offload-test-suite#1322)
- XFAIL lavapipe tests (llvm/offload-test-suite#1362)
- Add InterlockedXor tests (llvm/offload-test-suite#1370)
- [VK] Update format and XFAILs for
uint64_t2/int64_t2typed buffers (llvm/offload-test-suite#1377) - [NFC] Fix clang-tidy issues (llvm/offload-test-suite#1378)
- XFAIL Lavapipe WaveActiveMax (llvm/offload-test-suite#1386)
- [SPIRV] remove xfails for Flat and Location decorators (llvm/offload-test-suite#1389)
- [SPIRV] Enable 1x4 matrix cbuffer (llvm/offload-test-suite#1390)
- [SPIR-V] Enable Matrix Layout tests (llvm/offload-test-suite#1391)
- [SPIRV] Enable particle-life.test (llvm/offload-test-suite#1392)