<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/150162>150162</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Remove header mask from EVL tail folded VPInterleaveRecipes
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:RISC-V,
vectorizers
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lukel97
</td>
</tr>
</table>
<pre>
After #149981/#150074, we generate tail folded loops with interleaved accesses.
This should work with EVL tail folding, but we will still emit a mask to control the tail. In `optimizeMaskToEVL` in VPlanTransforms, we should try and remove the mask if possible to convert the wide loads/stores to VP intrinsics.
The wide masked loads and stores are generated inside VPInterleaveRecipe. We could create a VLEVLInterleaveRecipe to generate VP intrinsics instead, or maybe we could look at splitting up VPInterleaveRecipe to take the wide loads/stores as a separate operand to avoid creating a new recipe.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0U09vqzgQ_zTmMmpkzL-XA4dsXyNVykpVt2LPAx6CNwYjj0nU9-lXJmyrrvougPDM79-MkdmcJ6JaFH-I4meCSxicr-1yIbuvktbp9_rQB_IgVJbm-_2PVKhj_C6krHKhHuFGcKaJPAaCgMZC76wmDda5meFmwgBmCuQt4ZU0YNcRM_FOyIOQh7fBMPDgFqvh5vzl3vDUnD6xzHSOPO0SItfNWAsc4pNGEwBhRL5AcNC5KXhnIQx3ITt4nkCU0s3BjOYX_Yl8eXNPzUmUEswEzYvF6c3jxL3zI29eNi3BvwNOGjyN7kor5spjepgds2ktbZxX8mE9vxlNYB1qFurIwXniWNK8RP_eTGw63sF_trf6CLqGhZpXwq0R_WesGmKzJmhenj-SfKXOzLSDvwm6VXHnKY4AoTk9Naf_F0YlH2P6IimCB0Id_TsPI763FIO4o1rnLoABeLYmBDOdYZm_0RHhA17ot0EgAwLTjKsAN5OPZoMDvDqziY_oCBPdwN_NJbrO9D7bY0J1WhWZytNCVclQd22e9X2ZqR8FFl1VyqLvNeay1aSzNk0TUyupClmpTGaZktWu77u8zPuyrDqlZJuJXNIYl8Ta67hz_pwY5oXqtJBpqRKLLVleb4VSLXYXmrTIDq_Pfz0-NEIpoR6FUlfqgvPmF3mO_4qfia8j3kO7nFnk0hoO_MkQTLBUv943aiDU5O9L1Xs3ft150t-EzMnibT2EMLPIDus9PJ5NGJZ217lRqGNk2l4Ps3f_UBeEOq7G4ig2b9da_RsAAP__W8FaQQ">