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

    <tr>
        <th>Summary</th>
        <td>
            [X86] X86InstrFragments.td - replace def32 with something that will fail-safe
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:X86
      </td>
    </tr>

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

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

<pre>
    This came up recently in #114360 - the def32 pattern to detect implicit i32->i64 zero extension can get things wrong under certain circumstances depending on ordering in DAGISel and assume the upper 32-bit are already zero when they aren't.

We might be better off just having a pass that removes unnecessary zext nodes later on.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxEUk2PmzAQ_TXmMkoENpDkwCHVNtWqt26l7nWwB_DW2MgzJJv--orsVj3ZksfvY95DZj9Gok41X1TzVOAqU8rdj-8vfk6x6JO7dz8nz2BxJlgXyGQpSriDj6C0qaratCXsQCYCR4PRsKAI5QiSwJGQFfDzErz1At7onTJffVvDH8oJ6F0osk8RLEYYSUAmH0eGW05xhDU6ymApC_oI1me7ziwYLTE4Wig6H0dIEVJ2lLe7j_B0_vb8QgEwOkDmdaaHtnVZKIPRu94LYCbAkAnd_UPIbaK4jd23p6j0QfaqPKvy_Itg9uMk0BP0tBmDNAzwtrLAhNeNE2FBZpAJBTLN6UoMa4xkiRnzRvAuEJMjhoAPgLgvXGfcyZywoK46mNbUlanqYura46BLe7CHo7ZHMgfnXNnXbmhPJ9QDnQrf6VI3ZVUeK1NWTb13NTZGt7ptm6YsDwdVlzSjD_sQrvM-5bHwzCt1ldZVWRcBewr8iFvrHu1vik6Z8-uxVVpvDcjd9nHXryOrugyehf9DiZfw6Mo23zzB67F9jiz5knGcKQrvxcEOMi0B7b9C3LxMwGmmR7gfi7r5EGBAH3aMAxVrDt0ksrAyZ6UvSl9GL9Pa722alb5s_J_HbsnpjawofXn4YqUvn9aunf4bAAD__6U87y0">