<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">