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

    <tr>
        <th>Summary</th>
        <td>
            AArch32 vld1q_dup_u16 produces dup.32 instead of dup.16
        </td>
    </tr>

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

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

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

<pre>
    LLVM AArch32 produces incorrect instruction for vld1q_dup_u16 intrinsic with optimization turned on
Reproducible snippet:
https://godbolt.org/z/rEPG1Tzof

vld1q_dup_u16(&params->max)

Built with -O0
```
vld1.16 {d16[], d17[]}, [r0:16]
```
Built with -O2
```
ldrh    r3, [r3]
vmov.16 d16[0], r3
vdup.32 d18, d16[0]
```


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxtUk2PmzAQ_TVwsYL8AQQOPiTNbi9btaqqXlcGm-DKYNYf2Ta_vgMk2aYKgsHDPL15w5vGyj_85eXnF7TbubZnFE3Oytgqj_TYWudUG-Dkg4tt0HZEnXXoZCR5e5Vxeo2khGpwgNAtetehR3YKetBnsaBDdKOSyI4JPiR4912t7LoxCvlRT5MKCdutxT6Eyc8ZfYb7aGVjTcisO0J2hsc9fftMfpxtt8LXeCcloVVCy0k4MfhNwp4G8Tuh9b_wfdQmrDo3X_GlUuLLfWPMYKxku5dAWeyT4pDQT0iS7SXZLjkkDoPcGXN4yHTXjD6EGOl6BJdjV0p2YzsN9jQLWVXgiwwArFWYOQO7JKlWdTfQoz5rTBUnZVkyXNaUppIzWbNapEEHo_jV_3tzb9twaTevghLgaLd8IWUaneH_WQcTxyZr7QCJMafrawNkv2CfINXeR-XhUFQFoWnPq3zb1ZRQhXFXkYrVuK2boi1q1XWiIyI1olHG89kCSkf1jhYKOMPIqeYUU0owRDaHrK5kk5OipiwvcJ6rJMdqENpks455p1LHF0lNPHooGu2D_ygK7_VxVIqvjqciht463jUC_pFwMl2a80X8XyMg9Is">