microsoft / DirectXShaderCompiler

This repo hosts the source for the DirectX Shader Compiler which is based on LLVM/Clang.
Other
3.02k stars 675 forks source link

Clang::CodeGenSPIRV test for attribute.domain.isoline.hlsl is failing on ARM64 Release on Windows #6184

Open hekota opened 6 months ago

hekota commented 6 months ago

Description Clang::CodeGenSPIRV test for attribute.domain.isoline.hlsl is failing on ARM64 Release on Windows

Steps to Reproduce hctbuild -spirv -arm64 -Release hcttest -spirv -arm64 on ARM64 machine such as Surface Pro.

Actual Behavior

FAIL: Clang :: CodeGenSPIRV/attribute.domain.isoline.hlsl (10 of 1986)
******************** TEST 'Clang :: CodeGenSPIRV/attribute.domain.isoline.hlsl' FAILED ********************
Script:
--
C:\agent\_work\1\b\build\ARM64\DXC\Release/bin\dxc.EXE -T hs_6_0 -E SubDToBezierHS -fcgl  C:\agent\_work\1\s\DXC\tools\clang\test\CodeGenSPIRV\attribute.domain.isoline.hlsl -spirv | C:\agent\_work\1\b\build\ARM64\DXC\Release/bin\FileCheck.EXE C:\agent\_work\1\s\DXC\tools\clang\test\CodeGenSPIRV\attribute.domain.isoline.hlsl
--
Exit Code: 2147500037

Command Output (stdout):
--
Command 0: "C:\agent\_work\1\b\build\ARM64\DXC\Release/bin\dxc.EXE" "-T" "hs_6_0" "-E" "SubDToBezierHS" "-fcgl" "C:\agent\_work\1\s\DXC\tools\clang\test\CodeGenSPIRV\attribute.domain.isoline.hlsl" "-spirv"
Command 0 Result: 2147500037
Command 0 Output:

Command 0 Stderr:
fatal error: generated SPIR-V is invalid: ControlBarrier: Memory Semantics can have at most one of the following bits set: Acquire, Release, AcquireRelease or SequentiallyConsistent

  OpControlBarrier %uint_2 %uint_4 %uint_0

note: please file a bug report on https://github.com/Microsoft/DirectXShaderCompiler/issues with source code if possible

Command 1: "C:\agent\_work\1\b\build\ARM64\DXC\Release/bin\FileCheck.EXE" "C:\agent\_work\1\s\DXC\tools\clang\test\CodeGenSPIRV\attribute.domain.isoline.hlsl"
Command 1 Result: 2
Command 1 Output:

Command 1 Stderr:
FileCheck error: '-' is empty.

Environment DXC version: main as of 1/22/2024 Surface Pro, Windows 11 (26016.1001, arm64)

s-perron commented 6 months ago

This is odd. The instruction is correct. The memory semantics is %uint_0, which means none of the semantics are set. I looked at the code in the validator, and it looks correct as well. I'm wondering if there was a miscompilation somewhere.

We'll have to see if we can get access to a windows arm device. We generally do not have those immediately available to us.