<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">