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