<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/100497>100497</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            aarch64 (SVE): svdup_s8 followed by svinsr of the same value could be optimized
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          pinskia
      </td>
    </tr>
</table>

<pre>
    While looking into some GCC auto-vect code generation (https://gcc.gnu.org/PR116075) I noticed that both GCC and LLVM does not optimize this testcase:
```
#include <arm_sve.h>

svint8_t f(void)
{
  svint8_t tt;
  tt = svdup_s8 (0);
  tt = svinsr (tt, 0);
  return tt;
}
```

The fix for GCC, I have in mind for the GCC auto-vectorization issue will fix the above testcase so I thought I would file it here also. Note also the value `0` does not need to be a constant but both values passed to svdup and svinsr need to be the same.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxsU1GPozYQ_jXmZbTIMSTAAw97yaWKdK2qtro-row9YPeMHeGB9PbXVyY0u1qthIxhPn-e-b4ZGaMdPGLL9l_Y_pTJmUyY2qv18YeVWRf0z_ZvYx2CC-GH9QNYTwFiGBF-OR5BzhSeFlQEKmiEAT1OkmzwwERtiK6RFc9MnJk4D0rlg5_zMA1MnH__Y7c78GrPRAMX8IGsQg1kJEEXyNzJvYZv377_CjpgTBgIV7KjfUUgYyMQRlIyYrqCnxh_Zge-PfdPUViv3KwRWHGU0_gSF8wNK75u8XWNi_VUvxD0TNRLsJqJZotXX-4bgAeIiBWPv0TAihPERc_Xl1inmnk6_QnC-jilOBETR_iAmpDmyb_nZtXp85LW9S-D0Nt_oQ9TEioxXsDIBcF6GK3Xa4TMB4_CZF_v5tgYZ4SbdW7lSUjZhQUfkkIMcAEyYR4MwQVuYXYa-tQIlsDghCBdDDn8Fui-XUkW6WYEduAp4zfbPCZvA3QIElTwkaQn6ObN6_VUhKuM8Y5bBV3t34R7R5CuiXLEPNNtoZuikRm2u0rs6qrcH3hmWnXgfYmi77UodC_VodgXshZV0UmlG15kthVclLwSey5EI3jOpZSqQN10sqz2dc1KjqO0LnduGVPDZqtg7Y7zsqkyJzt0cR0ZITze7nIyIdIETW069NTNQ2QldzZSfKMhSw5bKSdlDmVqhz-_f11b4fmtifrgXLihhu7n_-WH_lH2JrFa_ejwMRE6myfXfpg4S2buchVGJs4ph-31dJ3CP6iIifOaeWTivJW2tOK_AAAA__-mdEo7">