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

    <tr>
        <th>Summary</th>
        <td>
            Bitmanipulations can be performed on vectors after they are moved over to scalar registers
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          Validark
      </td>
    </tr>
</table>

<pre>
    This code:

```zig
export fn foo(v: @Vector(4, u8)) u32 {
    return @bitCast(v & @as(@Vector(4, u8), @splat(0xF)));
}
```

Gives me:

```asm
.LCPI0_0:
 .byte   15
        .byte   15
        .byte   15
        .byte 15
        .zero   1
        .zero   1
        .zero   1
 .zero   1
        .zero   1
        .zero   1
        .zero   1
 .zero   1
        .zero   1
        .zero   1
        .zero 1
        .zero   1
foo:
        vpand   xmm0, xmm0, xmmword ptr [rip + .LCPI0_0]
        vmovd   eax, xmm0
 ret
```

However, I can move the `&` to come after moving to a scalar register:

```zig
export fn bar(v: @Vector(4, u8)) u32 {
 return @as(u32, @bitCast(v)) & 0x0F0F0F0F;
}
```

Emit:

```asm
bar:
        vmovd eax, xmm0
        and     eax, 252645135
 ret
```

https://zig.godbolt.org/z/jq1dfvboE
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0VE1v2zgQ_TXUZRCDIvVhHXSI7Wg3wB72UORakOJYZiqJKkkpTn59Qcl10gRJkxSlCRN4mnmcr0fhnG56xJKkG5LuIjH6g7HljWi1EvZbJI26L78ctIPaKCT8ktAdoT__M7rsB90sCB4HYz3se9gbQ9h6IvwSSEJvsPbGErZOCNvCuCasIKyAkTMg-WbxBQCw6EfbBw-p_VY4HziAsCxAwhG2fo1sGyzc0IrgQo_VckPY_MRP8t2zsJ_m8o-e0EH3aorCdQuy-m_7_zX9Ss-GsJL3HgEgTh8TCetz-Av0Aa0J1p-C_8z775O-bRuG6Fzm05oG0SsAOHYdDW1_ct4Zq2DwFki6sXoAwjZwble6e8bTmSnwoDieaRYDi_6NQfnX3OGENvhcQy166MyE4A8IwZBlJKPgDdSmQxB7jzYY6L4JoABXi1ZYsNho59F-QFBS2I8K6lFNs3RGzk46eSKuk2OQGD3Savm9UzNXnfa_1UuI-0UP59q_rPxpLQ0-t4alLEvSmKfv6s_B-8GFG1lFWPWgm1VjlDStXxnbBISw6vZ7rPaTNFeRKrkqeCEiLOM85kWRZHEeHcp6j5wmucw40pylqJKUZxmn61gUUnEZ6ZJRltCEJSzmWZqv8kwyVUguaU5pnhYkodgJ3a7adurC3ZF2bsRyXRRFFrVCYuvmV5exHu9g_kgYC4-wLYPPhRwbRxLaaufdI4vXvsVyo30nej2MrfDa9G6eRIkwoN0b26EC08M0D4k7jaE_4D0Ii_PAKjBTwMzziXTRaNvy1yI22h9GuapNR1gVAjkdF4M1t1h7wqo5fEdYNaf3IwAA__9jDrIO">