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

    <tr>
        <th>Summary</th>
        <td>
            [InstCombine] Fold `(sext(a) & sext(c1)) == c2` to `(a & c1) == c2` or `0`
        </td>
    </tr>

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

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

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

<pre>
    Alive2 proof: https://alive2.llvm.org/ce/z/ed6xP8  (contains generalized pattern)

### Motivating example 

```llvm
define i1 @src(i8 %a) {
entry:
  %conv = sext i8 %a to i32
  %0 = and i32 %conv, -2147483647
  %cmp = icmp eq i32 %0, 1
  ret i1 %cmp
}
```
can be folded to:
```llvm
define i1 @tgt(i8 %a) {
entry:
  %and = and i8 %a, -127
  %cmp = icmp eq i8 %and, 1
  ret i1 %cmp
}
```

### Real-world motivation

This snippet of IR is derived from [abseil-cpp/float_conversion.cc@FloatToBuffer](https://github.com/abseil/abseil-cpp/blob/fa6a3cd6c9e9f01164a0e4b5d2d8f0dbd1453fee/absl/strings/internal/str_format/float_conversion.cc#L1285) (after O3 pipeline).
The example above is a reduced version. If you're interested in the original suboptimal IR and optimal IR, email me please.

**Let me know if you can confirm that it's an optimization opportunity, thanks.**
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVE2P2zYQ_TX0ZWCDGn0fdNhdw8ACKVoEOfQWUOLIZkORKkl51_vrC1K2sxugaRGAsMXhe0O--RLeq6Mh6lj5yMr9RizhZF3359PpsumtvHQPWp0JYXbWjix_gFMIs2f5A8MDw4NIpzutz9POuiPDw0AMD28MDySr1z8aAIbNYE0Qyng4kiEntHojCbMIgZxh2DK-Z_zh-ov5uuA3G9RZBGWOQK9imjXBB2DF1xXvXk2SRmUIVAas4N4NDBvVAMNSMGyB1Y8rjExwl6gg7eIDy8GaM7B8D55eA1xJECyoHN_BeMIII6P9xmP4BFvMirpo8qqo33ud5kRQ8YP-vpF4ZGQ3nKOQXpzgV2n1_geN63YQBnqC0WpJEoK9a_ivWIRj-P-xiPLuMm-UJ9hm-FNtzZX7q-J-TP9nEnr7Yp2WMF0rwZr30C8n5cEbNc8UwI7w_BmUB0lOnUnC6OwErHwUvSelt8M8MzyM2orwNSaNnFfW7IaBFfwQrV_s4zKO5Fi5Z9h8LPKjCqel3w12ihWfHN4_rp57bft4gahEPshqaKkdeZZVheBU9KVE2Yxc9jIrynwkWunRiw9OmaNneFAmtoO4Gr-O1k0i_MujMf-UYVOmVGIjxkAOfs9hVjNpZYhhu7sFie7dI3p7phgjAY7kMpCEm0t4HuFiF4a1I0gPIR9IgjIQTgTWqaMyQoNfejsHNQkdwx0r5Ps2Jp4moTRMBLMm4Wn3MbVxfaIQz78Z-wIqXQqxrAdrRuUmCCcRQAWGtQdhVu_qLeUe7DxbFxajwiXeFU7CfPO71e1Gdrls81ZsqMvqjDdVi1W-OXUksryuqOSjQGwLnpXN2FNLRSWKrOLVRnXIseB51mY11gXf0VD3JAsx9Djysa9YwZOs-5DbKO8X6pqyyflGi560T9MT0dALpEOGGIep6yJn2y9HzwqulQ_-u5eggk5j99n48GSnPiau3MPBagmxLbCJ0yjmd81zBdf9kMWhGW35PvbggKzicVqtLJGwCfQRYV1ExJbbLE53PynyNEfWv-3s7F80xEpM0mKpJun_BAAA__9yKdXx">