microsoft / microsoft/DirectXShaderCompiler
[DirectX] Performing a `mul` between two double vectors produces invalid DXIL
Open
@damyanp is already working on this.
Since Mar 13, 2026.
bug
- Dominant language
- C++
- Stars
- 3.7k
- Forks
- 900
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 44
Description
Description
Performing a mul between two double vectors results in a DXIL validation error about the intrinsic call call double @dx.op.dot4.f64 being invalid.
Unlike the dot function which is expected to map directly to the dot DXIL op, the mul function should not be restricted to such a limitation.
Steps to Reproduce
https://hlsl.godbolt.org/z/asnerhMsd
Compile the following HLSL with -T cs_6_8
RWStructuredBuffer<double4> In;
RWStructuredBuffer<double> Out;
[numthreads(1, 1, 1)]
void main() {
Out[0] = mul(In[0], In[1]);
}
Actual Behavior
Compiler output:
error: validation errors
<source>:6:14: error: DXIL intrinsic overload must be valid.
note: at '%14 = call double @dx.op.dot4.f64(i32 56, double %10, double %11, double %12, double %13, double %5, double %6, double %7, double %8)' in block '#0' of function 'main'.
Validation failed.
Compiler returned: 5
Environment
- DXC version 1.8.2505
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.