HLSL Working Group

2026-06-25 - HLSL Working Group Minutes

Discussion Topics

  • This week in HLSL
  • Denormal handling

Meeting Notes

This Week in HLSL

19 PRs were merged this week across a few areas:

  • HLSL Frontend
    • Fixed miscompile from emitting lifetime.start after copy-in for inout parameters.
    • Corrected SPIRV CHECKs in derivative tests.
    • Added codegen tests for ConstantBuffer<T> element access and initialization.
  • DirectX Backend
    • Fixed missing llvm.dx.resource.getbasepointer handling.
  • Debug Info & PDB
    • Added DXContainer support and --dxcontainer to llvm-pdbutil.
  • Offload Test Suite
    • New tests: RWByteAddressBuffer 16-bit clobbering check, isnan() coverage, hull/domain system-value tests, and a mesh shader line-geometry test.
    • More progress on moving logic out of each target into the generic abstraction layer.
    • The split-build feature is live, which should improve build throughput.
  • SPIR-V Backend
    • Legalization and lowering fixes including G_PHI legalization and lowering of nested undef in constant aggregates.
    • Fixes for verifier/crash cases on indirect calls with aggregate arguments.

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

There are also 16 newly opened PRs, but 53 currently ongoing PRs which is up from last week.

Denormal Handling

We discussed the Denormal handling RFC on discourse. The proposed solution seems like a reasonable mapping.

Appendix: Merged PRs

HLSL Frontend

  • [HLSL] Emit lifetime.start before copy-in for inout parameters (llvm/llvm-project#191917)
  • [HLSL] Correct SPIRV CHECKs in derivative tests (llvm/llvm-project#176609)
  • [HLSL][NFC] Add codegen test for ConstantBuffer element access and initialization (llvm/llvm-project#204507)
  • Warn that the WaveSize attribute is unsupported for the SPIR‑V target (llvm/llvm-project#196004)

DirectX Backend

  • [DirectX] Handle llvm.dx.resource.getbasepointer intrinsic in DXILResourceAccess pass (llvm/llvm-project#204732)

Debug Info & PDB

  • [llvm-pdbutil] Add DXContainer support to llvm-pdbutil dump (llvm/llvm-project#200485)
  • [llvm-pdbutil] Add --dxcontainer option to llvm-pdbutil export (llvm/llvm-project#200486)

Offload Test Suite

  • Add RWByteAddressBuffer test to check for 16bit data clobbering (llvm/offload-test-suite#1120)
  • Adds tests for isnan(). (llvm/offload-test-suite#466)
  • Hull and Domain shader system-value tests (llvm/offload-test-suite#1304)
  • Create, upload, and read back buffers using generic API in DX12. (llvm/offload-test-suite#1309)
  • Add a Mesh Shader test that uses line geometry. (llvm/offload-test-suite#1310)
  • Remove upload buffer from resource set (llvm/offload-test-suite#1311)
  • Remove unused fields from VulkanDevice::InvocationState. (llvm/offload-test-suite#1324)
  • [DX][Metal] Enable array-of-constant-buffers.test (llvm/offload-test-suite#1325)
  • Enable split build feature (llvm/offload-test-suite#1328)

SPIR-V Backend

  • [SPIR-V] Legalize G_PHI of oversized vectors via fewer-elements (llvm/llvm-project#203993)
  • [SPIR-V] Lower undef nested in a constant aggregate (llvm/llvm-project#204377)
  • [SPIR-V] Fix crash on void indirect call with aggregate argument (llvm/llvm-project#204388)