<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">