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

    <tr>
        <th>Summary</th>
        <td>
            [Aarch64] Vector constant that could use u16-dup is loaded from memory instead
        </td>
    </tr>

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

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

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

<pre>
    ```zig
export fn foo() @Vector(16, u8) {
 return @bitCast(@as(@Vector(8, u16), @splat(0x0703)));
}

export fn bar() @Vector(8, u16) {
    return @bitCast(@as(@Vector(8, u16), @splat(0x0703)));
}
```

Compiled for Apple M3:

```asm
.LCPI0_0:
        .byte   3
        .byte   7
 .byte   3
        .byte   7
        .byte   3
        .byte 7
        .byte   3
        .byte   7
        .byte   3
 .byte   7
        .byte   3
        .byte   7
        .byte   3
 .byte   7
        .byte   3
        .byte   7
foo:
 adrp    x8, .LCPI0_0
        ldr     q0, [x8, :lo12:.LCPI0_0]
 ret

bar:
        mov     w8, #1795
        dup     v0.8h, w8
 ret
```

Relevant LLVM code:

```llvm
define dso_local noundef <16 x i8> @foo() local_unnamed_addr {
Entry:
  ret <16 x i8> <i8 3, i8 7, i8 3, i8 7, i8 3, i8 7, i8 3, i8 7, i8 3, i8 7, i8 3, i8 7, i8 3, i8 7, i8 3, i8 7>
}

define dso_local noundef <8 x i16> @bar() local_unnamed_addr {
Entry:
  ret <8 x i16> <i16 1795, i16 1795, i16 1795, i16 1795, i16 1795, i16 1795, i16 1795, i16 1795>
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8VV2P4jYU_TXOy9Ugx3a-HvLAwCBVmpWqPswrMvEF3DpxajsM9NdXTrLAztJ2u2oXRbrhcu7h-H5Zeq8PHWJNsmeSrRM5hKN19Zs0Wkn3W7Kz6lKTnE7PH_pA6JrQJZ576wLsO9hbS1hJWAVE0DdsgnWElWlO2AqGyV88T0HgMAyui8CdDivpQ4wUVPrJXqPLMThyVPGNCOp7IyOanmlB-egfHz5Tk2I9v3yQt5Pugby7P7iTB_BDFH5O5r3glW17bVDB3jpY9r1B-MQJX95jroHSt5Nn8br6-Se6pVcgzJ_F7hIQAPhjdzG7vxH2LaT_BvuPzN8j4P8ljV1-TbJUro-Y89gF1yJ8EW-UG-3vdOyP7HkCE740NmWE32qXrW_TcV_u2Lkf69ra02jfJzLG06LKvoSoYdQGJ7oojxH1Xn7F_6gDf0GDJ9kFeH19-wSNVfhX7WfMae4_hXvdIShvt8Y20kBnh07hHghfpTmcQZeEv8TpuG2JEbgduk62qLZSKXebwJcuuMvdoR2Gj1R8pUvg8Vy6hGK2P-47f3m4b_4uEWUUn-ZzIm776DsScU_FVzrNYax_FPdfv3990M_lT1TNVcUrmWCdFiwTWVGUVXKsqwaR7RWKshCpLKUoWZFTJVSVVU2KNNE1o0zQioqUi0pUC2yQM8oylvOCqyYlgmIrtVnEFltYd0i09wPWKS2Y4ImROzR-vKkY6_Adxl8JY_HicnUMetoNB08ENdoHf6MJOpjxiltK1xxzQbI1TLscGtv5EPs-HGWAxg5GweAxLvenOEvag7FSxdXsbAstttZdQHc-oFTJ4Ex9DKH3sVhsQ9jmoMNx2C0a2xK2GUdlMk-9s79iEwjbjLI9YZv5XKea_RkAAP__skLyLQ">