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

    <tr>
        <th>Summary</th>
        <td>
            Missed optimization: (x + y) & (2^C) -> x & 2^C when y % 2^(C+1) == 0
        </td>
    </tr>

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

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

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

<pre>
    ```
define i1 @src(ptr %0) {
  %v0 = getelementptr inbounds nuw i8, ptr %0, i64 4
  %v1 = load i32, ptr %v0, align 4
  %v2 = zext i32 %v1 to i64
  %v3 = ptrtoint ptr %v0 to i64
  %v4 = add i64 %v2, %v3
  %v5 = and i64 %v4, 2
  %v6 = icmp eq i64 %v5, 0
  ret i1 %v6
}

define i1 @tgt(ptr %0) {
  %v0 = getelementptr inbounds nuw i8, ptr %0, i64 4
  %v1 = load i32, ptr %v0, align 4
  %v2 = and i32 %v1, 2
 %v3 = icmp eq i32 %v2, 0
  ret i1 %v3
}
```

alive2: https://alive2.llvm.org/ce/z/h8HYTo
godbolt: https://godbolt.org/z/Mqzs9W8q4

Found this pattern in https://github.com/dtcxzyw/llvm-opt-benchmark/blob/main/bench/linux/optimized/static_call_inline.ll
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMlMtu8zYQhZ9mtCFiUKP7QgtfInSTXYGiq4CSaIstRSriyLenL8g4cpAWXf-AYYDDb454DgcUzqmTkbKGbAfZIRILDXau71fKotb2txpy_vjxbS-PykimYgYpd3MHWE40M8CMA1YMih3wLfPrM2eQHNhJktRylIY8p0xrF9M7ZpYLUyXgnj3b90zlKUtXgTgIaCt6phL8xp4DLLQ6mW84Bvwur-TxhwJZL7oySWAmmskqQ0-9n1waONH34UhB3X8ySKxQ9gmZJ5R6CFcgD4DqxonJjxXKPMQDNEsKUXoW-BaKg___kTKd6JdLOZj-Cnk1_Ux49fxg8D89J0_P30YM-FZodZYIyZYNRJODZAvYADaf9Y3W53Fj5xNg00nA5g7YDOVvf_5ugW9Ptm-tpn83PzYejb7n7ePuqj_Kj_Tzq40PjdGgHJsEkZwNU-aniKJhaTedHQGbnrrr_XYBbPyJXuxEL6003TCK-W_AptW2BWxGoYxf-R2PKrNcARs7kRrVXfaAjSNBqnvvhNbvymhl5EbrqK-TvkoqEck6LrI0L0teFNFQp2V1LDHnWZodeZEWRVnkeZ5znmOSiWMVqRo5ZrzkJcYYx8WmTUWVtlVXlXnbpVhCyuUolF6TjJRzi6zjDIuqiLRopXbhPUA08sLCLiD652Gug9l2OTlIuVaO3FOGFGlZvynnZM8eDgUpa_x1AJZXBrhjtzDEmPsKQva69-sXSF7ZNZRDjV0GadjND0ooAJZ7wF0cepODnzIeLbOu_-eC_Lm-bmea7V-yI8AmuHGAzcPuucZ_AgAA__9B3WxV">