HLSL Working Group

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_debug flag (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_t2 typed 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)