<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/111874>111874</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Crash in LV: "VPlan cost model and legacy cost model disagreed"
</td>
</tr>
<tr>
<th>Labels</th>
<td>
vectorizers
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
fhahn
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
alexey-bataev
</td>
</tr>
</table>
<pre>
Loop vectorizer crash for the following reproducer:
```
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
define void @init_dependence_analysis(ptr %iiv_used.i.i.i.sroa.0, i64 %indvars.iv71.i.i.i, i1 %cmp104.not.i.i.i, i1 %tobool108.not.i.i.i) #0 {
entry:
br label %for.cond101.preheader.i.i.i
for.cond101.preheader.i.i.i: ; preds = %for.inc121.i.i.i, %entry
%separability.0.i.i = phi i32 [ 0, %entry ], [ %separability.2.i.i, %for.inc121.i.i.i ]
br label %for.body103.i.i.i
for.body103.i.i.i: ; preds = %for.inc121.i.i.i, %for.cond101.preheader.i.i.i
%separability.1.i.i = phi i32 [ %separability.0.i.i, %for.cond101.preheader.i.i.i ], [ %separability.2.i.i, %for.inc121.i.i.i ]
%indvars.iv71.i.i.i5 = phi i64 [ 0, %for.cond101.preheader.i.i.i ], [ %indvars.iv.next72.i.i.i, %for.inc121.i.i.i ]
br i1 %cmp104.not.i.i.i, label %for.inc121.i.i.i, label %land.lhs.true105.i.i.i
land.lhs.true105.i.i.i: ; preds = %for.body103.i.i.i
br i1 %tobool108.not.i.i.i, label %for.inc121.i.i.i, label %land.lhs.true109.i.i.i
land.lhs.true109.i.i.i: ; preds = %land.lhs.true105.i.i.i
%0 = load ptr, ptr %iiv_used.i.i.i.sroa.0, align 8
%cmp118.i.i.i = icmp eq ptr %0, null
%spec.select209.i.i = select i1 %cmp118.i.i.i, i32 0, i32 %separability.1.i.i
br label %for.inc121.i.i.i
for.inc121.i.i.i: ; preds = %land.lhs.true109.i.i.i, %land.lhs.true105.i.i.i, %for.body103.i.i.i
%separability.2.i.i = phi i32 [ %separability.1.i.i, %for.body103.i.i.i ], [ %separability.1.i.i, %land.lhs.true105.i.i.i ], [ %spec.select209.i.i, %land.lhs.true109.i.i.i ]
%indvars.iv.next72.i.i.i = add i64 %indvars.iv71.i.i.i5, 1
%exitcond74.not.i.i.i = icmp eq i64 %indvars.iv71.i.i.i5, %indvars.iv71.i.i.i
br i1 %exitcond74.not.i.i.i, label %for.cond101.preheader.i.i.i, label %for.body103.i.i.i
; uselistorder directives
uselistorder i32 %separability.2.i.i, { 1, 0 }
}
attributes #0 = { "target-cpu"="sifive-p670" }
```
opt -S --passes=loop-vectorize ./reduced.ll
LoopVectorize.cpp:7430: VectorizationFactor llvm::LoopVectorizationPlanner::computeBestVF(): Assertion `(BestFactor.Width == LegacyVF.Width || planContainsAdditionalSimplifications(getPlanFor(BestFactor.Width), CostCtx, OrigLoop)) && " VPlan cost model and legacy cost model disagreed"' failed.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysV02P4jgT_jXmYiWyHULIgQMf4jTS-0oj9R5HTlwB7xo7aztMs79-ZQeaAAFGo-1upROX63F9PFWpcOfkTgMsUL5CjDV7vteIMZRvJrzze2MXXMEnnJKKew7HSWXEafHNmBYfofbGyn_A4tpyt8eNsdjvATdGKfNT6h220FojuhosypaIbBBZohk5_8VHz-0OPBbcc8VPpvMYZRuMGIPkgLIlJC3KlrNpvCTy64ayOcqWlM0TnbF-7XtYY-wG1lvZKrhAWunq42yadPovbX7qREndfSY73X2p9VcBjdSAj0YKjKZEaul_CGhBC9A1_OCaq5OTDrF56y1GLJfy-KNzIFIZf501PCWIrbGcTaNciyO3LpXHgvZ7opAGWX1oKZmm2vh7iTeVMYqS-VBYYsQyglGx6m0F7e3pK7gYVxYrXoEKAI2xaW20oISmrYU9cAH2DDRw99W2bIlRtsKtBeHOYYywUteUDXxBLO8tOZuBWO6g5ZZXUkl_SknYGAHavcQyYxjlK0yGqhjlm_icrx7U2eCc--Oj3hPvA1kpycZ9vhVmS_zm51cD8TbsD-7R0eiMxvD9Gf9FHEc5m18tDLQe5O_Xrbmipho-fcEeIvcitc8L5ibp9yn5EiquRar2LvW2A0ryR1o82fGsCkboNTB0tH5_09byra3lC1tfOR6TTeJOZbjArbfBkHedjSu503g-wAh5ofNL4rINlvWhxfD3BSqq6U6pQRG0UKcOFNSe9Q5ExX5lkO4LbOyNGet5F8tkrJCeNYObWN_1ghvZL4SwvOHtk_heST1KlNHifNsF6CvoV7VP3xp8r_2QnXHt8k3_uKn06B8X4vmrMQ-n0CtJ4FP60FyKQc3f8Os10vjr975Wxw55KNZnTf1-39O3TmBV50BJ540VYLGQFmovj-AuFt2Ixyh-beHFCtNwE6aBc-SvN_HKvbey6jy489QQuFyE5LJ-QErqNg4_2QYx5mQjj5C0s4IgxgagtxNbfzWtx8l3nCQtdw4cyjbKmDb5mglxitjWQpj9RHqp-TA2flx2pHUbZrtimpFQcZd17qXRWx4esFLHMASi7EYz7vi_4lr3Y2W2rM2h7TyswPmPLQpjYBkgl86BDZtxMJ7Ng7xHTv-Qwu9DPEJIvsGO16eP7WW1WKNijVvF9dpoz6V2SyFkAOLquzy0SjayjlaEGXAHPhizNXbkiGAJW-O1cX7tP8Pt_6zcBW-iJExzM8RmISP4I8Dg2jiPD0aAwlwLrKJtw1UhHd9ZABESxwrccKlApH2EJ2KRiTIr-QQWtGDzvCjLYj7ZL5qKFIRX9awkooR8PptCRmZlUZWkAWiaiVwwwqaUUEILMqPzlJYAbJaJaUaqJqtrNCVw4FKlISupsbuJdK6DBaV0XkwnsQLc-Svi-mngzt8SdhHUkqrbOTQlgeLuCuSlV7BYx48IqfG3j9iCGfuNiEw6qxZ771sXqMG2iG130u-7Kq3NAbFtpFT_L2mt-RNqj9g2euIQ256dOS7YvwEAAP__o6jjYg">