<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/120405>120405</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[RISCV] vp.merge of nxv16i1 tries to be unrolled
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:RISC-V
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lukel97
</td>
</tr>
</table>
<pre>
After #101641, this vp merge began to be emitted from the loop vectorizer with EVL tail folding from SPEC CPU 2017:
```llvm
define <vscale x 16 x i1> @f(<vscale x 16 x i1> %m, <vscale x 16 x i1> %x, <vscale x 16 x i1> %y, i32 %evl) {
%1 = tail call <vscale x 16 x i1> @llvm.vp.merge.nxv16i1(<vscale x 16 x i1> %m, <vscale x 16 x i1> %x, <vscale x 16 x i1> %y, i32 %evl)
ret <vscale x 16 x i1> %1
}
```
It crashes with `llc -mtriple=riscv64 -mattr=+v` with `LLVM ERROR: Invalid size request on a scalable vector.` because it tries to unroll it when legalizing vector ops. The DAG after type legalization looks like:
```
Type-legalized selection DAG: %bb.0 'f:'
SelectionDAG has 15 nodes:
t0: ch,glue = EntryToken
t2: nxv16i1,ch = CopyFromReg t0, Register:nxv16i1 %0
t4: nxv16i1,ch = CopyFromReg t0, Register:nxv16i1 %1
t6: nxv16i1,ch = CopyFromReg t0, Register:nxv16i1 %2
t8: i64,ch = CopyFromReg t0, Register:i64 %3
t18: i64 = and t8, Constant:i64<4294967295>
t12: nxv16i1 = vp_merge t2, t4, t6, t18
t15: ch,glue = CopyToReg t0, Register:nxv16i1 $v0, t12
t16: ch = RISCVISD::RET_GLUE t15, Register:nxv16i1 $v0, t15:1
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8ld9vozgQx_8a52WUCNv8CA88sCSpKvV0q7Tb15WBAXx1MGc7bNO__mSTtqtbbfeklS5CBOGZj7_2fBkLa2U_IhYk-USS3Uqc3aBNoc5PqPJsVev2UpSdQwOEcRrRNKaEVeAGaWGe4ISmR6ixFyM4DTUCnqRz2EJn9AncgKC0nmDGxmkjX9DAN-kG2D_egRNSQadVK8d-Cb__vK-g-vwFWEQzwksShSuNlkup-USissVOjgiEV7NthEJ4BprCM0hK-B5IHHWEbX82ypKT1__z4eePhy9-WHLmn3FWhOVAsk8kKsG_oUD4bllYI5T6QKNfy2aeNmEDN-PzTFNJ_1fdQbNB90ES9buf7b6vwVKSWweNEXZAu5QzFKeB9ckZOSkkfGekbeY0hvVJOGcI3xH2aSZp9BZ_d_f4B-yPxz-PhJdwO85CyRasfEEw-PcZrQM9ggCvTNQKrxbaeEaNjThbBOnAGYnWW-88Gq2Uf_VtwBEU9kLJF2-tJRH0ZDcADwPCrrwBETztLhO-hgon9ejd-mRBySf80X8kKh8uE66vCdiCRYVNyNuVN34dhCV1vYmAsKzzAJaRqLx_jfITD8ICTWDULdplCgAX-dxmIKzq1RmDifajM5cH_YRjCPE_x3zYm1eqZgiRlZ4uB6NPR-w9iVVwxF5ah4bw8hrthUXvoPi3QPQdlP4WiL2BANzWo2Qa_0eMTGOP4B7h6GtyyBNj63GsgkqP1onRLfGEVzHL4zzNWJ4Qvr_O7uj3-xoI8_R16WyOhW4Xh3sa7nS71IwmPxbNK37Qv1h2PEcLiC3a04UTAMfb--rx9n7nncHL4_7h683dl32Y7Jc4r4f-y6-rtuBtznOxwoJmPE4YjXO2GoqcZ61I26zJOkE77LZJF9GsznmbN7htkpUsWMRiyuiWUk4522zzjIoYI07juE07RuIIT0KqTWhl2vQrae0ZC8qiOEpWStSobDhWGKtF84Rj65d0e1-tHwlj_rAxhc9d1-fe-pYorbPvNCedCsdS2BOS-Kos7RJ091att--_xmsLwHZ1NqoYnJvCB8YOhB166YZzvWn0ibBDOEeWv_Vk9F_YOMIOQb0l7HBdwFywfwIAAP__7JcUWg">