<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/58405>58405</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AArch64] a redundant mov instruction compare to gcc
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vfdff
</td>
</tr>
</table>
<pre>
test case https://gcc.godbolt.org/z/5dTff475M
```
unsigned __int128 mul64 (unsigned __int128 mul0,
unsigned __int128 mul1)
{
return (mul0 & 0xffffffffffffffff) * (mul1 & 0xffffffffffffffff);
}
```
* llvm has a redundant mov instruction, can be fold into **mul x0, x2, x0** if issue the umulh one step first.
```
mul x8, x2, x0
umulh x1, x2, x0
mov x0, x8 -- redundant ?
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx9U8mSmzAQ_Rpx6TIlCcRy4GDHNbe55T4lhDBKYcmlxePk69NgT2bGZYcSWujXr1-3mt4Nv7uoQwQlg4YpxlMgxZbwFxwHpfKDG3o3x9z5A375g68Yfo5jWYtXQveEbklFb2M9JhvMweoB3t6MjYw3cExzVQLhzUMTJfzH1ROePQ_9GOHtTUC9-yTwOiZvl2gLN64V0Mt496ArWrY3FHuOIsXuI8b-Yba3Gbnm-XyESQaQqGFIdpA2wtGdwdgQfVLROIupYpkt9BpGNw9oim4RggN1rLlelnrAha8zvdrAjGBCSBripCEhdAJnNYSoTzAaH2L-UNxH_f5xN9-4v2GurIhhzzFLNl80NrjdbL5kS4qXOx2Z7lhVVZRWtOXZ0BVDW7QyiybOugMidtutV1NVErH_X91AueNJeszfAfZklvzc3XWqiVPqc8ThYbmK27I5efdLq4jHtYJh6d-mpCKbulIJ3euilKJStCyaRsqasaLtRa9YzWU2y17PoUOZhHOr36-XgHuUm5mOU84ZZejDG8Zz1jZ1TVWhRinaWghSUn2UZs4XHcvvk_luldSnQ0DjbEIMn0YZ1ibXazjklylOznfncRjHbA3crcL_AueOEjs">