HLSL Working Group

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.handlefromheap intrinsic (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 copysign backend 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_vector extension (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 InterlockedAdd tests (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 InterlockedMin tests (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)