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

    <tr>
        <th>Summary</th>
        <td>
            No optimization for SVE pfalse predicate
        </td>
    </tr>

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

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

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

<pre>
    Ref gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106329

If a known-all-false predicate is used on an SVE intrinsic, the result should be fully no-op, undefined, zeroing and no actual instruction (other than potentially returning a zero) should be generated. This does not seem to be happening even when a `svpfalse_b()` is explicitly passed in as the predicate.

As an example,

```c++
svfloat64_t add(svfloat64_t a, svfloat64_t b)
{
    return svadd_x(svpfalse_b(), a, b);
}
```

is being compiled to
```asm
        pfalse  p0.b
        fadd    z0.d, p0/m, z0.d, z1.d
        ret
```

when it could simply be an empty function.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx9VMmS2yAQ_Rp0oazSYkv2QYeZOFOVSw5JKlcXEi2JBAHF4u3r0-BZPD5ERQnohtevX7fUa37pfsBIp2GgfZjo7L1xpH4i1QsOtOaTCrm2E-7QfxVSMly6WZ8OuM-HSZD6RXBS78uiqasdKfakeLq9v42U0b9Kn9SKSbkamXRAjQUuBuaBCkeDA061okzRn7-_UqG8FcqJgVRfqJ-BWnBBeorhguS0BzoGKS9U6ZU28UxQHEahgMfNFawWakIwjicoG3xgEjGdt2HwAsOQaqsR1iI2RjTag_KCRUQLPliVbiccUu3uok6gwCJlntNfM9LmGhyGQGIAC_U6npmZMZAQ4AiKnmZ8MUqawh1NyvzQY3jERVNMHc5GikF4DG6YizoIvOBS2u8a5fdyPrmoE5zZYiRgwvc-BL0NlO45jmR1x1Fq5pv1wVPGUaTtJ0sU7d7Qk_f6ta8IFJ-bNngSIQ7nBPKQEeIksARQP79h7B-43RNGBXqIag16MUJi-l4_HGdu-SARn1tUnIu8_-wZkVqcr0WeWsEU2KRLaopXy7XE-dMdTOs__FL9hEd6sQecQM0vscyxAovxF-xElZrqtUQZ72q-q3cs81hT6L5rqo0Xi7iy1HqjtqnFzcNXkAUru4evTvg59DkKgxspj2_Tylj9BwaPW-FcAIeLTbNp62zuttuRb9tNX1RQjX05lhXfbmpWVC20wFiZSdaDdB3ZYHdUCk40QeCabPaZ6Kqiqoq2bHBu121eNsMI7Q7Guih527RkXcDChMwjj_g7yGyXKOE_wKFTCufdhxP7WUwKIIVDfBb8rG13CRcxzExnKXaXuP8DJ9dm3A">