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

    <tr>
        <th>Summary</th>
        <td>
            Missed optimization: fold ceil(x/16) == 0 to x == 0
        </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) {
  %1 = add i32 %arg0, 1
  %2 = lshr i32 %1, 4
  %3 = and i32 %1, 15
  %4 = icmp ne i32 %3, 0
  %5 = zext i1 %4 to i32
  %6 = add nuw nsw i32 %2, %5
  %7 = icmp eq i32 %6, 0
  ret i1 %7
}

define i1 @tgt(i32 %arg0) {
  %5 = icmp eq i32 %arg0, -1
  ret i1 %5
}
```
(x >> 4) + ((x & 0xF) ≠ 0) is equivalent to ceil(x/16).
ceil(x/16) equals to 0 only when x is 0.

Alive2: https://alive2.llvm.org/ce/z/E85DRW
godbolt: https://godbolt.org/z/Y5frz97Mh

The pattern is found in projects including wasmi, coreutils, ruff. An example:
https://github.com/dtcxzyw/llvm-opt-benchmark/blob/013f9638352b38eb8f26daddafeeb0d87fc6510b/bench/coreutils-rs/optimized/50z74lntrf1cjp27.ll#L1210-L1216
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8VMGOozgQ_ZrKxUpkl8HAgQM93Zx2LquVVns0uAiedUwGm046X78yCd2anlVLEQpVr-o9vyqsQ7BHT1RD_gT5804vcZzm-pv2PTnndt1k3mpQ_P5z7vUEvDE0WE_MCgYZD3MPWFqJDDDX85EDVgyKJ-ANSyHBQD4zbQz7BfONiQ2BK8KFcd4gIuWzLS_vHbz5JS3yLZ-tedufziypumNkwvANkq-QG13jqjrVxClBN4B6V-mXC_PhsvXB1Cd12JDFBxv93FDqg22mjaMA3kDxnJ6fPIvH-KVn-f9xbL7txSee_INnG1T6j-WVgXwB-cKytT8-McDyHkfF-LVdwy8IZQUNZ6sKGxj9XOyrduRjMqkn61INYCsUYHUA3nyOpRLtQoJzNnn3xi4jeXZN3fjhbkDj7CshyIaNMZ4DyAawBWz1Gj-k1TpM8xGw7QmwvQG2L2X-_OffwJvjZLrJxd-LH4lHYar5Jx_mW1V8H--sf43EzjpGmn0SM0xLWiPPzvP0g_oYmPW9W4z1R3bR4WSTwf000xKtC-llXobhwBrP6KpPZ0eJmjefVNg4Lt2hn06ArYn99fZ2AWzTkfbTOe478v140vO_gG3npg6w5UIOlZKlzLGTJXXlgMpoY_RA1HFTFkOvcsETdK1Otmyy9nMAbKdztCd7IwPY5vxWZM7HeRD9jzMWB-cA5R8CBd-np9qZWppKVnpHtSiySnFeynw31ooqrMrcaMIh451UplddJko1cOwqzXe2Ro45V0JwLmSeHwQqVH3Fq66SXZ8VkHE6aeveJ7izISxUi0wqqXZOd-TCer0gerqwNQuI6baZ69WjbjkGyLizIYaPNtFGR_V3GwIZ9jitjnbyaQ2GyZnfVjN9NenD4WkRr-9vu2V29RcTW2-1x7geewHYrjqT0Y-DvNb4XwAAAP__Dod3eA">