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

    <tr>
        <th>Summary</th>
        <td>
            [X86] Extra register usage in different order
        </td>
    </tr>

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

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

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

<pre>
    Original rust: https://godbolt.org/z/EqTcbvcYv
Renamd ir: https://godbolt.org/z/a4ParGx77
Same codegen if put 
` %low_nibble = and i64 %input_byte_ext, 15` 
after 
`%high_nibble = lshr i64 %input_byte_ext, 4`
Possibly result in virtual register rewriter according to observation.
Also want to know why can't load global constant with single `mov`  in rust codegen, is it name mangling or hidden arguments set by godbolt?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMkk9v2zgQxT8NdRnEkKg_tg86eONoj5tte2hPAUmNqWkp0iVHdpxPX1BJkaJAgZ4kYPh7fHzzVEpkPWIv2n9EeyzUwlOI_X1ULzcdbv_fHwsdxlv_XyRLXjmIS2JRH2BiPidRH4QchBxsGHVwvAnRCjm8CDk8fP9k9MV8uYjyKMrDB_RqHoHi37CqeVTx3-ft9pX9qGYEE0a06IFOcF4YXieiK0HI1oXrkyetHYKoj6D8CNQ1eUL-vPCTvjE-4TMLeQ9Vu0Irrk6M8V1KyHYiO_0q5dIU_6zVZGilH0NKpN0NIqbFMZCHC0VecmBoKeV7Il4j5R9lTIgjeQscIOiE8aKYgt-8ah1cCnBVnvP4mw9XuE43MMoLuWVwQY1gXdDKgQk-cT54JZ4gkbfZdlfO4ZIfmV3kdf3MLlumBMTgc6Kz8tZlFyHCROOIHlS0y4yeEyRk0Dd4242oh2Ls63Ff71WBfbWtq3Yra9kUU9_tTal2WnUn0-3Vtt11o6xKpbAtT6bdm4J6Wcqmqqqm3FW7ptnU5anptGkqrMr91lSiKXFW5DbOXeZcg4JSWrCvqq7alYVTGl1aCyqlxyusUyFl7mvsM3SnF5tEUzpKnN5lmNitzf6860R7hIdnjup9IUtSFnNII51OGNEzhDhiLJbo-t86SjwtemPCLOSQ9d8-d-cYvqJhIYfVVRJyeLN96eWPAAAA__8taxbF">