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