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

    <tr>
        <th>Summary</th>
        <td>
            [HLSL] Boolean vector swizzle support
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            HLSL
      </td>
    </tr>

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

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

<pre>
    Clang EXT vectors don't support swizzling boolean values because you can't take an address of an `i1`. In HLSL `bool` is `i32`, and we support boolean vector swizzles.

This feature needs design and spec work, and should potentially be something we look at for how to clean up our boolean representation for vectors since what we do now in DXC doesn't really work in all cases (see: https://github.com/microsoft/DirectXShaderCompiler/issues/6082).

### Acceptance Criteria
* Specification of boolean behavior we intend to support in Clang
* Implementation and tests of vector of bool swizzling
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8U02PqzgQ_DXm0nqRYwKBA4e8ZKMdaW4zh7kauxO8Y9zIbRLN_PqVycfsYfUkJARtV1dXV2lmdw6Inah-i-pQ6DkNFDvvL-OvHnX4LnqyX93e63CGvz7e4YImUWSwFITaJuB5migm4Kv7_vYunKEn8qgDXLSfkaFHo2dG-KIZjL5dSvoTQQfQ1kZkBjrlL1FLtxa1XMFLgL9f317zn4wmagmOl3qpRC2F2oMOFq74bP9sutC7s0FeCbkTcvc-OIYT6jRHhIBoGSzmwRcYntDAleLnA5cHmr2FiRKG5LT3X9AjMI2YhjzhFcETfYJOcKIIA10hEZiFwDwBzfHJJ-IUkTEknRyF5fhDQXbBIFwHnTKgJQh0BRfg8LEHS8g3qSIu_TO9XNTeg9GMDEI1jCjKHQwpTSzKnVBHoY5nl4a5XxkahTqOzkRiOiWhjgcX0aSPt0FbjHsaJ-cxCnV0zDOyUMdaNkqo9q6ZUOXtgZ0xOCWd2e6jSxidXuo7eJvQuJMzt-Ho9By7x0FfHMU8mQsJg80KPZblAiyGuqO8jJPH8alR3kBCTost7vu8Q_-4rLBdaduy1QV26-26UttWSlkMXVNKtWnLbdX063pTS1W3tlamaVpVomlk4Tol1UZWsl03qlRyZa0pK9u0p021bhqsxEbiqJ1f5RCsKJ6LRaGuXddlW3jdo-clLkplkwqlcnAemZnPLDbSO078A5Bc8kvElgvVAX7_r10fAhVz9N0ftppx769fU6R_0KT_7nEh-m8AAAD__wV7SZc">