Skip to content

[SPIR-V] Subgroup ops type limitation not honored by DXC #7093

@takayhan-AMD

Description

@takayhan-AMD

Description
It seems that various SPIR-V subgroup operations have limitation that "Result Type must be a scalar or vector of floating-point type, integer type, or Boolean type." whereas HLSL does not place any restrictions on the types involved.

SPIR-V spec: https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#OpGroupNonUniformBroadcastFirst
HLSL spec: https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/wavereadfirstlane

I see 9 instances of such subgroup ops which have the same limitation on the SPIR-V side in the spec above.

Steps to Reproduce
https://shader-playground.timjones.io/8dd14e21d5f401da942bb51a240638b1

Actual Behavior
Generated SPIR-V code from the link above fails to be compiled (see: https://shader-playground.timjones.io/8d1b712030acacbbb1f1cf4282b9a1dc)

ERROR: 'subgroupBroadcastFirst' : no matching overloaded function found
ERROR: cannot convert from ' const float' to ' temp highp 3X3 matrix of float'

Environment

  • DXC version: 1.7 - 1.7.0.3939 (5e080a7)
  • Host Operating System: Windows 10 Pro

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugBug, regression, crashneeds-triageAwaiting triagespirvWork related to SPIR-V

    Type

    No type

    Projects

    Status

    New

    Status

    Triaged

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions