HLSL Working Group

2026-10-22 - HLSL Working Group Minutes

Discussion Topics

  • This week in HLSL
  • Planning update from NVIDIA
  • Expectations around post-merge build failures
  • Requests for Review

Meeting Notes

This Week in HLSL

There were 35 PRs merged in HLSL-related areas this week.

  • The HLSL Frontend saw some groupshared related fixes, a bug fix related to boolean comparisons, and further work on semantics.
  • Further work on semantics went on in the DirectX backend, as well as improvements to GEP handling in DXILResourceAccess.
  • The SPIR-V backend had various improvements to debug info, a fix for type reconstruction of aggregates, and tightening of the SPIR-V extensions used for Vulkan.
  • In the offload suite, some tests were moved to HLSL 2021 for portability, more semantic support was added, and various XFAILs were updated.

21 new PRs were opened, and there are 51 ongoing PRs.

For a full list of merged PRs, see the appendix.

Planning Update from NVIDIA

Diego gave a brief overview of NVIDIA’s interests in HLSL in clang. They’re interested in clang as a replacement for DXC for graphics in Vulkan, and hope to get a few sample apps working by end of year so that they can share a preview of clang-dxc further with partners. A lot of this is related to improving debug info, as clang is already better at targeting SPIR-V’s NonSemantic DebugInfo than dxc since it doesn’t need to go through spirv-opt.

We discussed coordination across organizations with respect to issues being worked on and agreed that issue labels (HLSL, SPIR-V, etc) and assigning issues that are being worked on are sufficient communication here.

Damyan asked about the apps being targeted for NVIDIA’s milestone to see if it would be interesting to look at them from a DirectX perspective as well, and Diego pointed at https://github.com/google/bigwheels - specifically the fishtornado and fluid_simulation samples.

Expectations Around Post-Merge Build Failures

Dan Brown asked about expectations around build failures when merging PRs. We follow the general LLVM policy here, where it’s the committer’s responsibility to exercise due diligence on bot failures, and to follow a revert-to-green policy. When putting up a new PR that includes a fix for the issue, it’s best to refer to the previous PR, point out what’s different in the new change, and include the original reviewers of the change so that the new review will be expedient.

Requests for Review

The following PRs could use attention.

  • [hlsl][spirv] Add late pass in spirv backend to remove dead resources (llvm/llvm-project#225270)

Appendix: Merged PRs

HLSL Frontend

  • [HLSL] Use icmp ne instead of trunc on boolean load (llvm/llvm-project#221105)
  • [HLSL] Allow a groupshared struct to be passed as an implicit parameter (llvm/llvm-project#229939)
  • [CGHLSL] Account for matrices in semantics (llvm/llvm-project#233495)
  • [HLSL] remove groupshared from isLambdaSpecifier (llvm/llvm-project#233621)
  • [HLSL] Implement SV_ShadingRate (llvm/llvm-project#233629)

DirectX Backend

  • [HLSL][DirectX] Handles GEPs in dxil resource access pass (llvm/llvm-project#224754)
  • [DirectX] Lower semantic signature metadata to DXContainer parts and DXIL metadata (llvm/llvm-project#226562)
  • [DirectX] Update writing of semantic signatures to account for legacy padding (llvm/llvm-project#232454)

SPIR-V Backend

  • [SPIR-V] Fix pointee types of pointers extracted from or inserted into aggregates (llvm/llvm-project#227599)
  • [SPIRV] LLVM IR DIScope nodes are now emitted after their dependencies. (llvm/llvm-project#227361)
  • [SPIRV] Drop the per-kind NSDI type partition vectors. (llvm/llvm-project#229037)
  • [SPIRV] Drop the DebugTypeFunction operand cache. (llvm/llvm-project#229486)
  • [SPIRV] Move the emission of some remaining cases under getOrCreateDebugScope. (llvm/llvm-project#229487)
  • [SPIR-V] Type the get_fence pointer argument as i8 (llvm/llvm-project#230541)
  • [SPIR-V] Disallow SPV_KHR_poison_freeze in the Vulkan environment (llvm/llvm-project#232667)
  • [SPIRV][NFC] Clean up unnecessary code (llvm/llvm-project#233133)

Offload Test Suite

  • Remove stale XFAIL for local_resource_if_else_array_elements (llvm/offload-test-suite#1542)
  • [api-query] Add host information (llvm/offload-test-suite#1599)
  • Cleanup XFAILs in Vulkan WaveActiveAllEqual (llvm/offload-test-suite#1600)
  • Add support to test SV_StencilRef (llvm/offload-test-suite#1601)
  • Adjust XFAIL on boolean tests (llvm/offload-test-suite#1603)
  • [Semantics] Remove XFAILS related to semantic signatures (llvm/offload-test-suite#1604)
  • Update XFAILs for Intel 32.0.101.9150 driver release (llvm/offload-test-suite#1610)
  • Remove clang-vk long-vector XFAILs (llvm/offload-test-suite#1617)
  • Switch tests to HLSL 2021 (llvm/offload-test-suite#1619)

Other

  • [GlobalISel] Fix null deref when target has no stack guard variable (llvm/llvm-project#224252)
  • clang: Add convergence control bundles when creating calls (llvm/llvm-project#230765)
  • [NFC][DirectX][SPIRV] Clang-format intrinsic definition files (llvm/llvm-project#231647)
  • [CodeGen,MC] Make CodeGenOptions and MCCLOptions per-context (llvm/llvm-project#232365)
  • [DirectX][SPIRV] Add ImmArg to constant intrinsics arguments (llvm/llvm-project#232470)
  • [PowerPC][DirectX] Do not check result of getTerminator. NFC. (llvm/llvm-project#232813)
  • PassBuilder: Take LLVMContext for LibraryOptionsContext (llvm/llvm-project#233150)
  • [clang-repl] Address error recovery fixing infinite loop while parsing (llvm/llvm-project#127569)
  • [llvm] Use LLVMContext’s VFS to remove IO sandbox bypass (llvm/llvm-project#233475)
  • [clang] Replace PointerUnion::dyn_cast with llvm::dyn_cast_if_present (NFC) (llvm/llvm-project#234495)