HLSL Working Group

2026-08-20 - HLSL Working Group Minutes

Discussion Topics

Meeting Notes

This Week in HLSL

This week had 37 PRs merged in HLSL:

  • HLSL Frontend
    • Several convergent intrinsics were marked as convergent
    • The long-vector work has started
    • Matrix compare support was added
    • Bug fixes
  • DirectX Backend
    • Several issues with phi nodes were fixed in dxil-resource-access
    • The AdvancedTextureOps flags was implemented for samples
  • SPIR-V Backend
    • Calling conventions for intrinsic calls were fixed
    • Various bug fixes and lowering improvements
  • Offload Test Suite
    • Dynamic resource tests are now possible
    • Support for writing SM 6.9 tests is in progress
    • Infrastructural improvements for testing and test monitoring
  • Other
    • Clang docs are being moved to markdown
    • CodeGen GlobalISel seems to finally be happening

There were 32 new PRs opened, and there are 54 PRs currently ongoing.

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

Resource Instance Properties Proposal

We discussed proposal 0049, which described how we model properties of resources that apply to the instance of the resource rather than the type. While the HasCounter property is easy enough to get through analysis, IsGloballyCoherent and IsReorderCoherent don’t have specific operations we can key off of.

@inbelic presented a solution using an explicit coherence annotation and asked for feedback about alternatives where we model this in loads and stores or emit custom barriers. @bogner brought up that those approaches might better model accesses for optimizations, but @llvm-beanz pointed out that since these only affect cross-thread interactions it shouldn’t make any real difference in practice. Because of this, the more complicated solutions don’t seem worthwhile and the explicit annotations is probably a good direction.

@inbelic will update the proposals based on the discussion and move on to implementation.

Requests for Review

There were no requests for review this week.

Appendix: Merged PRs

HLSL Frontend

  • [HLSL][SPIRV] Add IntrConvergent to convergent intrinsics (llvm/llvm-project#211256)
  • [HLSL][longvec][Tablegen] Use templates to define Vector api’s larger than 4 (llvm/llvm-project#216143)
  • [clang][HLSL] Complete the pattern an instantiation is built from, not the primary template (llvm/llvm-project#216388)
  • [HLSL][Matrix] Add comparison operator support (llvm/llvm-project#216791)
  • Reland “[HLSL] Generate semantic signature metadata (#212892)” (llvm/llvm-project#216805)

DirectX Backend

  • [DirectX] Prevent dxil-resource-access from entering an infinite phi loop (llvm/llvm-project#211345)
  • [DirectX] Prevent dxil-resource-access from constructing a foldable phi (llvm/llvm-project#211346)
  • [DirectX] Set AdvancedTextureOps flag for basic sample ops with non-constant offset (llvm/llvm-project#215916)
  • [NFC][DirectX] Rename ResourceInfo::RecordID to BindingID (llvm/llvm-project#216376)

SPIR-V Backend

  • [clang][SPIR-V] Use the C calling convention as the target default (llvm/llvm-project#210882)
  • [SPIRV] Simplify by not using StructType::setBody unnecessarily (llvm/llvm-project#212736)
  • [SPIR-V] Dereference non-null OpGroupAsyncCopy event operands typed as pointer-to-Event (llvm/llvm-project#214222)
  • [SPIRV] Implement bare bones lowering for G_PREFETCH (llvm/llvm-project#215505)
  • [SPIR-V] Avoid dead OpLoad for unused cosine result in llvm.sincos lowering (llvm/llvm-project#215773)
  • Add support for NSDI DebugLine and DebugNoLine. (llvm/llvm-project#215851)
  • [SPIR-V] Drop storage-class MemorySemantics bit for relaxed Vulkan atomics (llvm/llvm-project#215802)
  • [NFC][SPIR-V] Enable spirv-val for SPV_AMD_weak_linkage test (llvm/llvm-project#216316)
  • [SPIR-V] Fix crash when a function pointer global is a use of a cloned function (llvm/llvm-project#216638)
  • [SPIR-V] Patch invoke/callbr call sites when legalizing function signatures (llvm/llvm-project#217000)

Offload Test Suite

  • [NFC] Rename texture tests to not be specific to Texture2D (llvm/offload-test-suite#1387)
  • Dynamic resources: implement support for DirectX and add tests (llvm/offload-test-suite#1415)
  • Migrate NVIDIA SKU over to frequent build path (llvm/offload-test-suite#1436)
  • Repair failing Interlocked Xor/Or/Add tests (llvm/offload-test-suite#1439)
  • Update a few out of date XFAILs (llvm/offload-test-suite#1448)
  • Update DXFeatures.def to include SM 6.9 (llvm/offload-test-suite#1451)
  • [ci_results] Add more patterns to the workflows to skip (llvm/offload-test-suite#1453)
  • [ci_results] Work around gh stale data issues (llvm/offload-test-suite#1454)
  • Correct atomic int64 XFAILs (llvm/offload-test-suite#1455)
  • [ci_results] Use strptime instead of fromisoformat (llvm/offload-test-suite#1456)

Other

  • [llvm] Remove GlobalVariable::getAlignment (NFC) (llvm/llvm-project#213300)
  • [CodeGen][AArch64] Use vector parts for internal non-power-of-two vectors (llvm/llvm-project#213982)
  • [docs] Rename selected Clang docs to Markdown (llvm/llvm-project#214615)
  • [docs] Finish MyST migration for selected Clang docs (llvm/llvm-project#214617)
  • [Clang] Diagnose conflict between always_inline/noinline attributes (llvm/llvm-project#215173)
  • [NewPM] Port ir-translator (llvm/llvm-project#216915)
  • [GISel][NewPM] Port Legalizer (llvm/llvm-project#217046)
  • GlobalISel: Add m_GIntrinsic matcher (llvm/llvm-project#217439)