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

    <tr>
        <th>Summary</th>
        <td>
            [arm32] `(vec1 & (vec2 ^ vec3)) ^ vec3` should transform into `vbit`/`vbsl`/`vbif`
        </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>
    ```zig
export fn select(vec1: @Vector(8, u8), vec2: @TypeOf(vec1), vec3: @TypeOf(vec1)) @TypeOf(vec1) {
    return (vec1 & (vec2 ^ vec3)) ^ vec3;
}

export fn select2(vec1: @Vector(8, u8), vec2: @TypeOf(vec1), vec3: @TypeOf(vec1)) @TypeOf(vec1) {
    return (vec1 & vec2) | (~vec1 & vec3);
}
```

On aarch64, these compile the same:
```asm
        bsl     v0.8b, v1.8b, v2.8b
 ret
```

On arm, we get: 
 https://zig.godbolt.org/z/haTaP4hnK

```asm
select:
        vldr d16, [sp]
        vmov    d17, r2, r3
        vmov    d18, r0, r1
 veor    d17, d16, d17
        vand    d17, d17, d18
        veor d16, d17, d16
        vmov    r0, r1, d16
        bx lr

select2:
        vmov    d18, r0, r1
        vldr    d16, [sp]
        vmov    d17, r2, r3
        vbit    d16, d17, d18
 vmov    r0, r1, d16
        bx      lr
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVcty4yoQ_Rq0oeKC1nuhRRJfb-4is0hljwSSmEHCBUh5LObbp8BSosTOPGo2o3KJbvr0oU-7jZm1shuFqFB6g9J9xCbXa1M9MCU5M9-iWvPnCmXk9HmRHSJ7RK7F01Ebh9sRW6FE4xAUs2goiq8xSsiDaJw2CIoCwS2eCgSlN2bRwIK4fz6Ku3bNeg3Hn4bLS9sY5TenejDG2Ag3mREvYYwgW2zAKP3vRL9QrW68pKN8vxgX1cE_Ki-cGHC3fv_7NhC0nutbv8mt3LsRM2aaPkt8na4XVuBGD0ephPewZYNA8fUHBmaHt-L8U1sV1pnsijoopqsB3jiBjXC_KMUMPudR4E640LBTYu_c0foy4IDg8CK7Xad5rZXbadP5HQSHnt2zL0k__r_lPK94mdlV0ipgVtxgTjN_PEpv7BGl-w-IQc9-5TT3IAPhHX8GCvNhSHjTBTQLbTYUy3Hee0_CRv4OtizFB5hn23AsjBfreS3kEqh-wspsu7ZO_lmTfqpu28kA-utm1tJtmM768LviwvOqcJ2IiFcxL-OSRaKiOU3zAkhBo74iZVPnTZw2WZpxShOgBApo07bgbdvmJJIVEEhISlOakIKQnWgTygnPyrxsWEoLlBAxMKl2Ss2DH9FIWjuJqgTI8kixWigbLl2AUTziEEQA_g42lc-5qqfOooQoaZ19Y3HSqXBbMzPEHo69lD-48zKCba8nxbEzbLStNgOWo9Oex3c70B2CY9XGka1v2GRU9f6X2EnXT_Wu0QOCgy9zWa6ORn8Nfw2HIM4iOATxPwIAAP__W4Wxuw">