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

    <tr>
        <th>Summary</th>
        <td>
            [InstCombine Missing zext(shl(trunc)) fold
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm:instcombine,
            missed-optimization
      </td>
    </tr>

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

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

<pre>
    From https://reviews.llvm.org/D146637:

```ll
define i32 @src(i32 %a) {
  %trunc = trunc i32 %a to i16
  %shl = shl i16 %trunc, 8
  %ext = zext i16 %shl to i32
  ret i32 %ext
}

define i32 @tgt(i32 %a) {
  %shl = shl i32 %a, 8
  %and = and i32 %shl, 65280
  ret i32 %and
}
```

https://alive2.llvm.org/ce/z/etjn25


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8ksFunDAQhp9muKCszHht4MAhCULqoQ9hYBYmNSbCJk3z9JVhd8tWVSXEGPON_f8zY7znwRFVoF5A1YlZwzgvleMf3CXt3P-qmmWe0jGEdw_yGbABbBb6YPrpT9Z-TKd5GQCbOjtrLfOIiBrE7a3F_li7b_R0YUcpS0zhLPzSARbbByoDWKaQv-xgGrfCsrouBVmn--pGpmFOOdMH0o9242LkTN-TAV_T4sDRZ9i4r7i4gjEnHijxBi4UbnfRZ7hayeujs0cjYQj_NfIg7049SjOu35gYr4wfbaS0wkL8Q5tx_d_abvU-Sn3snbH8QXhsXUeAzRdgQ-HNoTqmJn0l-1KWJqEq03mpdKkwT8aqVb00WdZlZ4mq64mMEkK3pZZZ0bamSLhCgVJIlFkmFOanCxX55YxlUWjdUpHDWdBk2N6VJOz9SpXOtBKJNS1Zvw0lYiRAPrPzoZunlh0BIuArIE7sPfVP83vgib9M4NnFf6pOliqmPbXr4OEsLPvwZ16TwMFuI__N-fC6n5l-Z-_ZDdtsABZb8YvrFJWxp5fZ9sm62OqxogOHcW1P3TwBNpvWPTy9L_MbdQGw2ax5wGZz9zsAAP__l_L5rg">