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

    <tr>
        <th>Summary</th>
        <td>
            Clang generates strange code for empty SVE vector initialization
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    https://godbolt.org/z/zEao8394M

So for the following code:

```c++
#include <arm_sve.h>
svuint8_t
  encode0 (svuint8_t x, svuint8_t y)
  {
 return sveor_u8_x(svptrue_b8 (), svaesmc_u8 (svaese_u8 (x, svdup_n_u8(0))), y);
  }

  svuint8_t
  encode1 (svuint8_t x, svuint8_t y)
 {
    return sveor_u8_x(svptrue_b8 (), svaesmc_u8 (svaese_u8 (x, svuint8_t {})), y);
  }
```
clang generates very under-optimized code for the second case. `GCC trunk` does not have such issue.
```asm
encode0(__SVUint8_t, __SVUint8_t): // @encode0(__SVUint8_t, __SVUint8_t)
        mov     z2.b, #0 // =0x0
        aese    z0.b, z0.b, z2.b
        aesmc   z0.b, z0.b
        eor     z0.d, z0.d, z1.d
 ret
encode1(__SVUint8_t, __SVUint8_t): // @encode1(__SVUint8_t, __SVUint8_t)
        mov     w9, #2
        mov     w8, wzr
 mov     w10, #1
        index   z2.b, #0, #1
        ptrue   p0.b
 mov     z4.b, w9
        mov     w9, #3
        fmov    s3, w8
 mov     z5.b, w10
        mov     w10, #4
        cmpeq   p1.b, p0/z, z2.b, z4.b
        cmpeq   p2.b, p0/z, z2.b, z5.b
        mov z4.b, w9
        mov     w9, #5
        mov     z3.b, p2/m, w8
 mov     z3.b, p1/m, w8
        cmpeq   p1.b, p0/z, z2.b, z4.b
 mov     z4.b, w10
        mov     w10, #6
        mov     z3.b, p1/m, w8
        cmpeq   p1.b, p0/z, z2.b, z4.b
        mov     z4.b, w9
 mov     w9, #7
        mov     z3.b, p1/m, w8
        cmpeq p1.b, p0/z, z2.b, z4.b
        mov     z4.b, w10
        mov     w10, #8
        mov     z3.b, p1/m, w8
        cmpeq   p1.b, p0/z, z2.b, z4.b
        mov     z4.b, w9
        mov     w9, #9
        mov z3.b, p1/m, w8
        cmpeq   p1.b, p0/z, z2.b, z4.b
        mov z4.b, w10
        mov     w10, #10
        mov     z3.b, p1/m, w8
 cmpeq   p1.b, p0/z, z2.b, z4.b
        mov     z4.b, w9
 mov     w9, #11
        mov     z3.b, p1/m, w8
        cmpeq   p1.b, p0/z, z2.b, z4.b
        mov     z4.b, w10
        mov     w10, #12
 mov     z3.b, p1/m, w8
        cmpeq   p1.b, p0/z, z2.b, z4.b
 mov     z4.b, w9
        mov     w9, #13
        mov     z3.b, p1/m, w8
        cmpeq   p1.b, p0/z, z2.b, z4.b
        mov     z4.b, w10
        mov     w10, #14
        mov     z3.b, p1/m, w8
 cmpeq   p1.b, p0/z, z2.b, z4.b
        mov     z4.b, w9
        mov w9, #15
        mov     z3.b, p1/m, w8
        cmpeq   p1.b, p0/z, z2.b, z4.b
        mov     z4.b, w10
        mov     z3.b, p1/m, w8
 cmpeq   p1.b, p0/z, z2.b, z4.b
        mov     z4.b, w9
 mov     z3.b, p1/m, w8
        cmpeq   p0.b, p0/z, z2.b, z4.b
 mov     z3.b, p0/m, w8
        aese    z0.b, z0.b, z3.b
        aesmc z0.b, z0.b
        eor     z0.d, z0.d, z1.d
 ret
```



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMV01z4jgT_jXiogqlD2Pkgw8JhPf0nlI7h724hN3B2rUlVpJJwq_fkm2-HFjITGYylLFK7qef7n7UGEk6p1YaIEWTBzSZj2TjS2PTp7y0plB6BfbPshktTfGWlt6vHeL3iC0QW6xMsTSVHxu7QmyxDd9HaQRPov8jMkfkvrs_GfxsLPYl4GdTVeZF6RXOTQGB6AiHYtJdOWIP4eqeMq50XjUFYMRn0taZ28C4RPyxs7tNo7QXme-mGIMO3AQjJvY2_IrYDB-mb4glOzya9pGwBd9Yjd0GjM0akb22FGtvG8iWIhAGt5ZIgqvzrBFdFAkO-kkfqGjWmc4agZggrVPSu7aR-cMh-PxYAowvlENvLedQDcafWdAuVOCfzm-oZ7eY3TSvpF7hFWiw0oPDG7BvuNEF2Duz9qpWWyjanti3ioPc6ALn0sEYo5j8bzbD3jb6bxQTXBhwWBuPS7kB7Jq8xMq5BsaD4NLV3ZO-KRATWfb07Y9eYjbDJ9ME8Xvc9TZGEbnVaa93-NRm045bNl4GLGKc7Dn5nLySU3yQusWTDr8fg_8QWedD5AkCjMU9V9EjupGOi0OPHytCv0eR605nFXlJej3YBbsI9pet7c3755T0jvTUUekCXgdSn0e2LR_Gg2T7dYo655drWfNT-3MPcLz1FkPaSU9LyQXefVXRKSCv1_BPyJV2DGvSvVxn-zrblM_7sIs-k6FPSOTm4icXmpz38Rhii_q8EDsIfQf5noLfLdt1feMruX9OYkP2obLvJJ3-WFo_lNR10cRvIdqldjxj_3mZfUC1S4j_SO7nNhmlX7qONyjGfvH74lprUf67KxZ9bY8d2Q-iXft_-BrRfvXP7gPlko_0Lj8Cn6W9uInk5zeRn7OFHOzxj--jIuVFwhM5gpTGUyFEkkRiVKaCRMvplNMojiI5iae0EJMpLxJKyZTH9HmkUkYYJ5xOaEQTIsb5JGckipIoApBxQsI2tJaqGlfVpg5nz1G79U9jGnE-quQSKrc7yto0gO6WzcqhiFTKeXdw88pXkM4GJxPnrdQrOBxGoF77N_z07RFvIPfGYqWVV7JSW-mV0aPGVsNzsfJlsxznpkZsEcL1w93amr8g94gt2pQdYos2638DAAD__xA1-io">