<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/143630>143630</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Missed optimization: fold icmp eq f(a), f(b) to icmp eq a, b where f(x) = xor(x, lshr(ashr(x, 31), 1))
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Cancelll
</td>
</tr>
</table>
<pre>
```llvm
define i1 @src(i32 %arg0, i32 %arg1) {
%1 = ashr i32 %arg0, 31
%2 = lshr i32 %1, 1
%3 = xor i32 %2, %arg0
%4 = ashr i32 %arg1, 31
%5 = lshr i32 %4, 1
%6 = xor i32 %5, %arg1
%7 = icmp eq i32 %3, %6
ret i1 %7
}
define i1 @tgt(i32 %arg0, i32 %arg1) {
%1 = icmp eq i32 %arg0, %arg1
ret i1 %1
}
```
This pattern may be generalized to folding icmp eq f(a), f(b) to icmp eq a, b when f is a one-to-one function
alive2: https://alive2.llvm.org/ce/z/MjuQvH
godbolt: https://godbolt.org/z/EMG9xrzPM
This pattern is found in https://github.com/dtcxzyw/llvm-opt-benchmark/blob/1d00b842a6755156e5cef3059f19fafdedce899b/bench/zed-rs/optimized/1j4zsx5ep6sgayh5fdkarbyql.ll
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVF2PqzYQ_TXDi5XIjDGJH3jI3S3ty0qt1D9gYAze6-Bc7Owm-fWVIZvczVaVeqVIBM45c8bzYR2C7UeiCuQ3kM-ZPsbBT9WTHltyzmWN784VlHz5Ofe2B77ryNiRmM0ZFDxMLeDWCmSAUk89B3xi99ccUDHYfAO-Y-lTzkA8Mx2GiT1oRP7BwZnjfuLkiXDDxYyf_A3GBH-EupKKfzPKPxvJL0bFJ6Py0UjejW6kzUyy7f7A6McHUVyJ5cyaKM7VQrkBvoPN82MRYx__fxEfLD9kP6d3N85vxrduAt_9PdjADjpGmka212fWEOtppEk7e6GORc-Md50d-5ubAdxqQJWs0v8m5Rb9DdcJaNj7QCMzzAammR9pFf3Kj8TMcWyj9WPKg--0s2-EIHZsiPEQQOwAa8B6-b5O47b2Uw9YtwRYXwDrl9fjX29_LPLed4138av-Cly1Sfbby-_qNF3-fFmUn85tAzP-OHbMjo9xbByOzbr1e8C6i-3pcn4HrFNeK3-Iq4bGdtjr6Ttg3TjfANZ5x3mzLVCXGylzWZJsyQgulcmV0aajrqWtUok6q1N-1K2mAFj7Q7T7VPcU57W4hJOkQxl6fR6k6b7rqTn_cGvnsq4SnRJKZ1Tlm0JJtRVcZUMlODdm2xnZtIpKkfMtcqM2xrSN4VslM1shR8nLnKMQeaHWxsiyNUWpCRtRCgEFp7227lb7zIZwpCovRCl45nRDLsyXBeJI72xGATHdHVM1F6Y59gEK7myI4R4m2uioerEhUMeuB9XzJIjdPGO_MGATzYTTvB3Loi6vT_NOpzjL43Rd-yXo8lTZcXLVf_R7vuyuzT5M_pXaCFjPB07NulbkrcJ_AgAA___MeoR5">