Issue 149722
Summary [SPIRV][Vulkan] Invalid SPIRV generation for HLSL `sign`
Labels backend:SPIR-V, clang:HLSL:SPIRV
Assignees
Reporter llvm-beanz
    Given the following code:

```hlsl
StructuredBuffer<int4> In1 : register(t0);
RWStructuredBuffer<int4> Out1 : register(u4);

[numthreads(1,1,1)]
void main() {
  // int
  Out1[0] = sign(In1[0]);
  int4 Tmp = {sign(In1[0].xyz), sign(In1[0].w)};
  Out1[1] = Tmp;
  Out1[2].xy = sign(In1[0].xy);
}
```

[Compiler Explorer](https://godbolt.org/z/48Y1j64x8)

The generated SPIRV contains an invalid `OpVectorShuffle` instruction:

```spirv
%69 = OpVectorShuffle %4 %66 %33 0 1 -1 -1
```

[Compiler Explorer](https://godbolt.org/z/6ceMx9731)
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to