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

    <tr>
        <th>Summary</th>
        <td>
            Missed Optimization: simplifying truncated shift-and-mask to direct masking and comparison
        </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>
    Example: https://godbolt.org/z/bb68b44rP

Alive2: https://alive2.llvm.org/ce/z/USKkBX

```llvm
define i1 @src(ptr noundef readonly captures(none) %0) {
  %2 = load i64, ptr %0, align 8
  %3 = trunc i64 %2 to i32
  %4 = lshr i32 %3, 8
  %5 = and i32 %4, 255
  %6 = add nsw i32 %5, -1
  %7 = icmp ult i32 %6, 2
  ret i1 %7
}

define i1 @tgt(ptr noundef readonly captures(none) %0) {
  %2 = load i64, ptr %0, align 8
  %5 = and i64 %2, 65280
  %6 = add nsw i64 %5, -256
  %7 = icmp ult i64 %6, 512
  ret i1 %7
}
```
I found this pattern in function ossl_quic_free in openssl/ssl/quic/quic_impl.c
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8lE9vnDoUxT-N2Vgz8lzAwIIFSR7S09NTK1WVuouMbcCNsaltkiafvrIZ0n9Kl5VGY9n3dw86B1-Y92oyUraovEHlXca2MFvX3jLDpdY6G6x4bv_5ypZVS5R3eA5h9SjvEPQI-smKwepwtm5C0L8g6IeB1kNRuPeIdIh0nVaPEn5vZOn8rPXjcm3m8qrw8cN_Dzef9nZEyf6LICKdkKMyEqsLRgXxjiOo1-CwsZsRcsROMmGNfsacrWFz0iOojTUSQYMRlCSt1Q0iHY57wCi_w9oygRUtENziKLaDt5hpNRlcH3Ce4OA2wyO99weLVQ4HUux6fnbxNDVFoVeJMtWZEUc5PRPK8gDoDgiBjX86oDJCp8vBVIlRfFnxpsMB0aSUGCdDCgjKKiZY3e1R_hRdmMJfjO4H39fgIkRLqMkbzndsdx7NveF9x5L38vIH98ctQqT7F4_RMQ6z8nhlIUhnsDJ43AwPyhpsvdf3XzbF70cnZSzZVRrvNYJ-_4_F63KvllWfeSbaXDR5wzLZXqqC5FWRU5rNLWXDWDV1XlQE6gbGvCZkgIGToWacDyJTLRAoCUBByksD9Cwpo3VFKSkJXBo6ooLIhSn9OiqZ8n6T7QXqgpJMs0Fqn4YXwMgnnKoIIM6ya2PTadgmjwqilQ_-u0xQQcv2f-W9FPjdGtSiXlhMIA6rj77U-KzMtF95FqTAflZjODEjTgvzD_HyC-UkDzhuIxpfMbfLypzy1mSb0-0v3wsV5m04c7sg6NNM78tpdfaz5AFBnwx4BP3V4WML3wIAAP__yP1Ynw">