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

    <tr>
        <th>Summary</th>
        <td>
            [AArch64] Redundant movprfx instructions
        </td>
    </tr>

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

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

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

<pre>
    * case from sve-intrinsics-int-arith-merging.ll, https://gcc.godbolt.org/z/f6a8GGvna
```
define <vscale x 16 x i8> @and_i8_zero(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %a, <vscale x 16 x i8> %b) {
  %a_z = select <vscale x 16 x i1> %pg, <vscale x 16 x i8> %a, <vscale x 16 x i8> zeroinitializer
  %out = call <vscale x 16 x i8> @llvm.aarch64.sve.and.nxv16i8(<vscale x 16 x i1> %pg,
 <vscale x 16 x i8> %a_z,
 <vscale x 16 x i8> %b)
  ret <vscale x 16 x i8> %out
}
```

I think **movprfx z0.b, p0/z, z0.b** and **and     z0.b, p0/m, z0.b, z1.b** can be combined into **and     z0.b, p0/z, z0.b, z1.b**

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVMuymzoQ_JphozIFg3l4wYJjX07dbX7ApRegREguSRCHr0-BfXLycJws4nKBQD09TdMD9V71Rsoa8hfITxGdwmBdPXei6yJmxZcasCGcekk6Z0fiZ7lTJjhlvOJ-Xe6oU2HYjdL1yvSx1oBHMoRw8ZA1gC1g23Me91Ywq0NsXQ_YLoBtV9Dq9XU2FJITJA0Uyf2_XQrZKSMJZMfZc6oluZK0IFeiKsj-I7BPqBFnVZ0X6Sxg9Ssu3XCYX_pV0O94MKfPtxnggUD5clNFtorzQiA7ES-15OFB7b9ovT6XMiooqtUi3Xft7RS29pxq_cQfrecxptTxodjHfpYxNSI21zktVPVnw-79nmg_L38DW-170-7kI7PekHYK9yCUp4eJuB3_J2FQ5hMBbACb0c4X113JksRsNfOS3MJ1vN9ZMYQacYevq_X3A3x8hx_Jkn4r49QQJgm3I1NGCqJMsM94lsc8N9mRqDNxyA40knValFhVRZ5X0VCXadoxyViWZntadkWRVLw7MF4mZSU6gZGqMcEsSZM8wT1mRZxiWQpR7pHKLqecwj6RI1U63t64dX2kvJ9knR-qLI80ZVL7bbwRjfxMtk1AXKfd1WvNjk29XxOjfPDvLEEFvX0XmmYLEeQn8kGKyQhqAnlzXhkf3MSDssZHk9P1T6OvwjCxmNsRsF2p76fdxdmPkgfAdhPkAdtN8NcAAAD__xSuUfQ">