<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/149722>149722</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [SPIRV][Vulkan] Invalid SPIRV generation for HLSL `sign`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:SPIR-V,
            clang:HLSL:SPIRV
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          llvm-beanz
      </td>
    </tr>
</table>

<pre>
    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)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVE1v4zYQ_TWjCxGDGurDPOjgj3UbYIstNkGKHmlpZHGXIgWS8jr59QVlJ1skRU8LjGmIwzdP895QKgR9skQNlFso95ma4-B8Y8x5vDuSsi_Z0XXPzW_6TJbFgVjvjHE_tD2x1nUEYgN8iYpfYzDBAN88RD-3cfbUbee-Jw9ip20sQHxi9zZnIDbM00mHSB5wHTmgBLEFvvn61_9Av8zxA3Yu3rApyq2dxzh4Ul0AXOeAu9tPQrkHvjk73bFRaQu4BpQM6gRlDPAAeGDaxuUxUUG55VDuGYg9SzIBru_t6-4bK0uYgj2O03IQ6u2Hs6vL80s6j7uPdVY_Uqbevxa7EeevxI_j9C6F14r__Vqry_NPPer9v615U2jnxkkb8uzTZTLOk1_aWQ8xTiE5uihxct3Rmbhy_gR4eAE8FOu_829VcUmyXWs9DsROZMmrSB17-PP-6xNrnY1K28CUZdqeldEdg4p_mZ6ojc4_DHPfG4KKM23DYrV29uMchUn7c9rAspJLq-8qMMCySEtVpVUIxlnO7lL8yqarlv64yFqkAcq6RnRSSJVRk9el4CilrLOhkYp4z4UiyXneUyepbGXbFSjrLs8lz3SDHEteI8-rohL1an1sO6GICpmXbV9IKDiNSptVunmJPtMhzNTkhawRM6OOZMJySRGPqv1OtgOxSYrfPQEi4A4QW6PsCcTm988Pn2_ZJVnus9crPZ8CFNzoEMNPqqijWb4AV0S5h3L7NJvvyqYhvL-ZeLX3Zrd2lvXOs0SV7F3msOLZ7E3zTlIdh_m4at0IeEiUt7-7ybtv1EbAw9JqADzcuj03-E8AAAD__6jAVEg">