<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/128475>128475</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[InstCombine] Missed optimization: `((X + LowMask) & LowMask) ^ LowMask -> (-X) & LowMask`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:instcombine,
missed-optimization
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dtcxzyw
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/5jh59cjs7
Alive2: https://alive2.llvm.org/ce/z/BSkmbC
```
define i32 @src(i32 %x) {
%18 = add i32 %x, 63
%19 = and i32 %18, 63
%20 = xor i32 %19, 63
ret i32 %20
}
define i32 @tgt(i32 %x) {
%18 = sub i32 0, %x
%19 = and i32 %18, 63
ret i32 %19
}
```
I don't have any idea about fixing this issue in `SimplifyDemandedInstructionBits`.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMk0FvqzAMgH-NuVitgkMgHDjQdkiT3k677BpIWrIBqUjo2v36J1jXrbu8JyGQw2fzxTjKe3sYjClAbEDsIjWF1o2FDs354_Ie1U5fijaEowdeAlVA1cHp2nVh7cYDUPUBVInXVuTNq8-AlWVnT4aAl3ifpZb1dded-mtmY67pm-e3vt4CKyFl14uV2uztYNByQkiYHxsguQQkzkA5QrYBVuIcxxKB71Bpjd_EFlN-A_JPYLgBsbwniC3E2Y03Iv9BjCZ8rdMsB9luvv-2DIfwT0s_1QvO5vIL9n-SPxTi_FvhR8ceUbsBKAvYqpNBNVzQaqNQ1W4KuLdnOxwwtNaj9X4yaAeElD3b_tjZ_WVnejVoox8HH8apCdYNGxs8pGwNrIx0wXXOcxWZIs4SxiVjkqK2kJTl-9zUDedxnO7zOM0lY1wqmZI0fB_ZghgJRpSwVCQJrSk2scqEIhJaSc0hYaZXtruNRrToFTHJJBNRp2rT-WU6iWYEeGkHHxrX13YwQAS0BaLeem_0yh2D7e2Hmv3nd2IXjcWctqqng4eEddYH__2tYEO3zP687-21ptjh01IO78rxcm4YkASSLwi0wT_u_Un5t-VPU3oXioevEFfAHxBIrl5-gymLprH7fb5saKd63bgeqFp2_PlYHUf3apoAVC0d8kDVtUmngv4GAAD__4xPEyc">