<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61339>61339</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Use a 32-bit mov instead of 64-bit mov for shorter encoding on x86
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:X86,
missed-optimization
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kazutakahirata
</td>
</tr>
</table>
<pre>
Compile:
```
define i64 @foo3(i64 %x) {
%t0 = lshr i64 %x, 8
%t1 = and i64 %t0, 255
ret i64 %t1
}
```
with:
```
$ clang -O2 -march=skylake
```
I get:
```
48 89 f8 mov %rdi,%rax
0f b6 c4 movzbl %ah,%eax
```
We could use a 32-bit `mov` for its shorter encoding:
```
89 f8 mov %edi,%eax
0f b6 c4 movzbl %ah,%eax
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysk0-PmzwQxj-NuYwSGRsbcuCwu1Gk9_SeqvY64AHcGBzZJt3dT19Bkt1VG-VUCxlsP_PnxyNjjLafiGqmnpnaZzinwYf6iO9zwiMONmDCrPHmrX7x48k6YvKJ8T3jt1nz67MuDXV2IrC6AFbwznvJRLWuhHplYgesfL4oYdlKHJjcg4tDgE_VC1RfNfmqwcncJIkvGqHUVRUofRzl17bK_d3-LvMvm4bHHEwU0Dqcetj8L2AzYmgHJvfx-ObwSPAg93_QU3qcvKig2kFXwejPACtkMJaJl-UDXy8i3kGjoS3g7zH683vjljAcLlF0i7rb0neC1s_OwBwJEKTYNDYB03z0Z6Y5dD6ATRHi4EOiADS13tipf0xxQbg7PrnoxkX_iCsztTQ7ucOM6lyXlcqLUslsqLkuNO24LCtRaGybJs-7QmiUVCmlWsxsLbiQXOY511wpueVSqLLlBimXnS47VnAa0bqtc-dx60Of2RhnqnUu5S5z2JCL6z0RosH2SJNh8ulHpZkQa7ditDGS2fhTsqN9x2T9tJypfRbqJeemmfvICu5sTPGzSrLJUf3tqzfLD7RTTIQGfAe6-NhdvPrTJ_ATvFY6m4Orh5ROcTFOHJg49DYNc7Nt_cjEYSl4fW1Owf-kNjFxWBkjE4cV83cAAAD__4mWF_I">