<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/110424>110424</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AArch64][SVE] Fold constant operands for svmul and svdiv
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
k-arrows
</td>
</tr>
</table>
<pre>
As with https://github.com/llvm/llvm-project/issues/110392, GCC has implemented this in recent patches. Consider the following example.
https://godbolt.org/z/M8Pe1G6Ge
```cpp
#include <arm_sve.h>
svint64_t test1 (svbool_t pg)
{
return svmul_x (pg, svdup_s64 (5), svdup_s64 (3));
}
svint64_t test2 (svbool_t pg)
{
return svdiv_x (pg, svdup_s64 (5), svdup_s64 (3));
}
```
GCC:
```asm
test1(__SVBool_t):
mov z0.d, #15
ret
test2(__SVBool_t):
mov z0.d, #1
ret
```
Clang:
```asm
test1(__SVBool_t):
mov z0.d, #5
mul z0.d, z0.d, #3
ret
test2(__SVBool_t):
mov z0.d, #3
mov z1.d, #5
sdivr z0.d, p0/m, z0.d, z1.d
ret
```
I referred to the GCC patch below.
[svmul](https://github.com/gcc-mirror/gcc/commit/6b1cf59e90d3d6391d61b2a8f77856b5aa044014)
[svdiv](https://github.com/gcc-mirror/gcc/commit/ee8b7231b03a36dfc09d94f2b663636ca2a36daf)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVVGP4yYQ_jXkBV0Eg03iBz8kznnVh0qVTrrXCJtxTIuNBdi53q-vcLLa7Gq3artFURIP33x8M9Z8qBDMZUQsSX4k-Wmj5tg7X_7xRXnvrmHTOP1neQj0amJP-xinQMSBQE2gvpjYz822dQOB2trl-efL5N3v2EYCtQlhxkCg5pyJAghU9KmqaK8CNcNkccAxoqaxN4GakXpscYx0UrHtMWxp5cZgNHoae6Sds9ZdzXih-EOl5C1hJ8IOb0Q53Tgbt85fCNQ_CdS_7n9D_iSf8AYnkt0-7TTdIyDM2NpZIyWiUn44hwW3PRFf7_vrd1jMGGV2jjRiiJwS2Ielcc6eI50uBIo7eHe8_aHUY5z9SMMyzPb8IyUkXEXDoufpHGSWQnnKfBsUa7Ag4vhMevpYCvwbKdos_5eU5z4-KnuqqvQmXgNUGG6RtXEE9ufzt-_HVe7KfHhWeVuDW-hPttVJCgHB89fbHuMLG_wjtrQeGT8gfLeiyqrx8t9reuf4N_UMs32FeECKO_JF4ecKF-80mn-kK2iz-If8iRGoh0eFa-5bhe_18BfqsUPv06S7dZaTCaxTThu07nqfZJIf12Eh-YnA_m_M5tK2XwbjvfO3BwJ164bBJMuRDW-7vMCCaaGlKLiWvAG173a7fS6bXCmWZYxnL2OSTtVm-dSpiPtmB4I3TCghddeyQhdZB42UQgrZKkhh1REoNroUuhCF2mDJd7CTXADApi_3OdtLzoqMKy6lEDorOtnk2MiC7bDtNqYEBhkroOAgRAbbpu0UYI67vGMgeEEyhoMydptsOFngZjXgknOWQbaxqkEbVqcHGPFK110CkIzfl6t3N_MlkIxZE2J4oYkm2vWKOBx828ss9So_fvv-leQnWjuraevGENUYqZvQq1EH2jl_8z6qRn2zns3sbfmpSySVsZTwVwAAAP__vwHkIA">