<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/87378>87378</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LoopVectorize] Assertion `OpType == OperationType::DisjointOp && "recipe cannot have a disjoing flag"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
patrick-rivos
</td>
</tr>
</table>
<pre>
Reduced LLVM IR:
``` llvm ir
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
define i32 @main() #0 {
entry:
br label %for.body300.us.us.i
for.body300.us.us.i: ; preds = %if.end559.us.us.i, %entry
br label %for.body326.us.us.i
for.body326.us.us.i: ; preds = %if.end559.us.us.i, %for.body300.us.us.i
%indvars.iv18 = phi i64 [ 0, %for.body300.us.us.i ], [ %indvars.iv.next19, %if.end559.us.us.i ]
br i1 false, label %cond.end339.us.us.i, label %cond.end354.us.us.i
cond.end339.us.us.i: ; preds = %for.body326.us.us.i
br i1 false, label %cond.end339.us.us.i.if.then357.us.us.i_crit_edge, label %cond.end339.us.us.i.cond.end354.us.us.i_crit_edge
cond.end339.us.us.i.cond.end354.us.us.i_crit_edge: ; preds = %cond.end339.us.us.i
br label %cond.end354.us.us.i
cond.end339.us.us.i.if.then357.us.us.i_crit_edge: ; preds = %cond.end339.us.us.i
br label %if.then357.us.us.i
cond.end354.us.us.i: ; preds = %cond.end339.us.us.i.cond.end354.us.us.i_crit_edge, %for.body326.us.us.i
br i1 false, label %cond.end354.us.us.i.if.then357.us.us.i_crit_edge, label %if.end559.us.us.i
cond.end354.us.us.i.if.then357.us.us.i_crit_edge: ; preds = %cond.end354.us.us.i
br label %if.then357.us.us.i
if.then357.us.us.i: ; preds = %cond.end354.us.us.i.if.then357.us.us.i_crit_edge, %cond.end339.us.us.i.if.then357.us.us.i_crit_edge
%.pre1143.i7 = phi i64 [ poison, %cond.end339.us.us.i.if.then357.us.us.i_crit_edge ], [ %indvars.iv18, %cond.end354.us.us.i.if.then357.us.us.i_crit_edge ]
%arrayidx429.us.us.i = getelementptr [14 x i16], ptr null, i64 0, i64 %.pre1143.i7
store i16 0, ptr %arrayidx429.us.us.i, align 2
br label %if.end559.us.us.i
if.end559.us.us.i: ; preds = %if.then357.us.us.i, %cond.end354.us.us.i
%indvars.iv.next19 = add i64 %indvars.iv18, 1
%0 = trunc i64 %indvars.iv18 to i32
%cmp323.us.us.i = icmp slt i32 %0, 1
br i1 %cmp323.us.us.i, label %for.body326.us.us.i, label %for.body300.us.us.i
}
attributes #0 = { "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v,+zicsr,+zifencei,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl256b,+zvl32b,+zvl64b,-e,-experimental-smmpm,-experimental-smnpm,-experimental-ssnpm,-experimental-sspm,-experimental-ssqosid,-experimental-supm,-experimental-zaamo,-experimental-zabha,-experimental-zalasr,-experimental-zalrsc,-experimental-zcmop,-experimental-zfbfmin,-experimental-zicfilp,-experimental-zicfiss,-experimental-zimop,-experimental-ztso,-experimental-zvfbfmin,-experimental-zvfbfwma,-h,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smepmp,-ssaia,-ssccptr,-sscofpmf,-sscounterenw,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-za128rs,-za64rs,-zacas,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmp,-zcmt,-zdinx,-zfa,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zihintntl,-zihintpause,-zihpm,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-zmmul,-zvbb,-zvbc,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl16384b,-zvl2048b,-zvl32768b,-zvl4096b,-zvl512b,-zvl65536b,-zvl8192b" }
```
Backtrace:
```
opt: /scratch/tc-testing/tc-apr-2/llvm/llvm/lib/Transforms/Vectorize/VPlan.h:1131: bool llvm::VPRecipeWithIRFlags::isDisjoint() const: Assertion `OpType == OperationType::DisjointOp && "recipe cannot have a disjoing flag"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt reduced.ll --passes=loop-vectorize
#0 0x00005bd204995b60 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2d84b60)
#1 0x00005bd204992f6f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2d81f6f)
#2 0x00005bd2049930c5 SignalHandler(int) Signals.cpp:0:0
#3 0x000076eef1a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x000076eef1a969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x000076eef1a969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x000076eef1a969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x000076eef1a42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x000076eef1a287f3 abort ./stdlib/abort.c:81:7
#9 0x000076eef1a2871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000076eef1a39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00005bd203b25ea2 llvm::VPlanTransforms::dropPoisonGeneratingRecipes(llvm::VPlan&, llvm::function_ref<bool (llvm::BasicBlock*)>)::'lambda'(llvm::VPRecipeBase*)::operator()(llvm::VPRecipeBase*) const VPlanTransforms.cpp:0:0
#12 0x00005bd203b2c77d llvm::VPlanTransforms::dropPoisonGeneratingRecipes(llvm::VPlan&, llvm::function_ref<bool (llvm::BasicBlock*)>) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1f1b77d)
#13 0x00005bd203a05435 llvm::LoopVectorizationPlanner::tryToBuildVPlanWithVPRecipes(llvm::VFRange&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1df4435)
#14 0x00005bd203a05c9e llvm::LoopVectorizationPlanner::buildVPlansWithVPRecipes(llvm::ElementCount, llvm::ElementCount) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1df4c9e)
#15 0x00005bd203a0c319 llvm::LoopVectorizationPlanner::plan(llvm::ElementCount, unsigned int) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1dfb319)
#16 0x00005bd203a0f8a9 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1dfe8a9)
#17 0x00005bd203a1273e llvm::LoopVectorizePass::runImpl(llvm::Function&, llvm::ScalarEvolution&, llvm::LoopInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::BlockFrequencyInfo*, llvm::TargetLibraryInfo*, llvm::DemandedBits&, llvm::AssumptionCache&, llvm::LoopAccessInfoManager&, llvm::OptimizationRemarkEmitter&, llvm::ProfileSummaryInfo*) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1e0173e)
#18 0x00005bd203a1388d llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1e0288d)
#19 0x00005bd20291a276 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0xd09276)
#20 0x00005bd2047bc141 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2bab141)
#21 0x00005bd202911bd6 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0xd00bd6)
#22 0x00005bd2047bae3b llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2ba9e3b)
#23 0x00005bd202919dc6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0xd08dc6)
#24 0x00005bd2047b8cb1 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2ba7cb1)
#25 0x00005bd202193ce5 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x582ce5)
#26 0x00005bd202186316 optMain (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x575316)
#27 0x000076eef1a29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#28 0x000076eef1a29e40 call_init ./csu/../csu/libc-start.c:128:20
#29 0x000076eef1a29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#30 0x00005bd20217bf95 _start (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x56af95)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt reduced.l
```
Godbolt: https://godbolt.org/z/jj39h3z7M
Minor spelling nit: `disjoing -> disjoint`
Found via fuzzer.
Likely caused/exposed by https://github.com/llvm/llvm-project/commit/6ef829941b38f7e8a28c4cba1ff25cd0ae9f7d3d https://github.com/llvm/llvm-project/pull/83821 @fhahn
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkO11z3KiWv0Z-obpLQt8PfmjH6btTm1RcSWr20YUAdTNGoABS7P71W4DULXXLjp253r27dyrTHM7hfHI4IEiQ1mwnKL0O0psgvb1CndlLdd0ioxh-WCnWS31VSfJ0_ZWSDlMCPn368zP442sQb4LwNgg3QRb6P4DzvgFMebRBakcNIMggjp5kZ0AQ34IAQrpqgnhDV20Qb7LE_azYEYhgEcSbCBYrEUOP-2ZxEM7EGsVaTkeRimncZ8mqEw9C_hQrzkT3uNqJ7sjmfwmtmaCAxRAESdggJgIrugQBjEMQ5Dd-GBVGPR39A5UCHFWUgwCmtVRrG404DNedtn_YVMESOd6AIL4BraJEDwanrF5TQdK0PI6CHyzea_Zql_XC7EW9E_Jb9D7rFnBcgvRI6TXro8JJavcMsCwBQXoDwudFgCC9ddT0Zi5mLeijicqB88Iox3cKAotAjbimdvgxIFgKYtnieObLJT1NlgK2xL4UsGfj_ibL1qxemz0VcZqPqHusmLmnZPdr5gVXJtwvO_UL5iWXl0KzkJFvD_DLUfgbplzKXbRkYugrlf0iemeJ_xspchL7-hS5XMMvO_s3wn4-tW8J-wL1lbp-GYrfWWSnarZuFY2iJF6z_KKYtZJpKX5Tx7PlLirOJb7S2UkhDGCKlEJPjDwmcFIp41uwo4Zy2lBhWqOs9igBj4BF2WCPxYqOcwtbR8MRmAdjDJE2UlHL7gc6mYvKLRVxthMAPpMez-fpJfGZ7eo8h54N5ClOF_uME4cIGZ0-n5lokh2hG2xUJ_DScGCkPT5MGHDTxjCeTQjDTQs0N_6gAdNwpsQXhQvO2RpfqimL9ItjSH47DTMyRrGqM1QPRxwb19ymJ_QHqVVNkekU1fakFN_aX3iTJRUzAfwQwBvkG-wb4pvaN41vFOXo0YO9bw4MazWCNRWYsqHX0xjWE_jxCGcJmcD1BD6O4REsqmMHptmpE8MTnCUWXlH389hSxezSQHylm6ZtFrBiCauXsYvIH1IzconvFgYfEGrkArbaowUsRy6OF2il8SUaN7K9xNZV3dhj7jme4ZrxhfEWr_UCflG60QvO9M_ptISfjXN0b3_0HstOGKqo-On7O2Ra5EHTIz6AvT6hez0jmJ5iF3rdIOaxDW0bZ6rWI0pj3Bo1gLJum3qEZ-q1NshQKsaOYth42OChPeqeaNZdljxyB_aI0BHoPFAhNaCY6NEwTKBWetF9WzUOesQ94t0AVewImAYJ1g5dyn8OUIPwCNFmgDRrnEWPusYUuTOHhXvcjlAtFOasfax_1EfUzwZh_OPHjxHxw_aJJLP-DznQWc2s40xjpAjhUtApvuad3p-wZk8RqdAEriawPsHYL4qhIwVpZH9C1A1tGHk8IUbnfeecSJsWMXVC6CcxGd4TH_nH3malQFabbJ0tBxTBQg1glowQRgPwc8B4jw7emUOFffMwdB_G_qNvPQ_2PNgP8plzwNQ3tW982h6wT4gDYcKLqD1vvR-aYXEd6nHAfgqMVIaHSnhguJLNEWqP0GGAMGokGmFWjxDXIxNWPpkODAu_jg7Mxs1DeyaMMPzUaVE3jt_7Gnh48L9iaMjQ0qH1nj140Q96aOgwTA9kH5am6byufpiAfpiBfghQf4pQP0xK_7Ab2hEv8AgMWvoHcRzji7GDRn49tiOfPvLpkW-wsx8M7XkUwmEKeh5lcXHswDApRjiGeXbsJGGZjXAawRHM0jQ-4ouotAQITpv9eAUz3ftvEH4wCmF6eVPju7I17tQFtxorZPA-gFuDV4Zqw2wsbAe1agUDuOW8byYNqwK4_a6Q0LVUjQ7g9k-KjVTsQC18x5FY74N4E0VxZHVUUnJ3PWRtiTd_3n2lmLX0v5jZ__F1y9FOewLTt0z_JZkww8UMlkI7KzdaU2WYFCDIwi_t96fW3f7YA82XlipkSRbp5YxSvrQggFkAM3dL5HQCjISQBuxRTwECxI_cgZqjnTv-5KBGjFOy9lG6-_Rx8-0j0F3VMAMQqLodULSVytiz4N6Y1tkOtwHc7pjZd9Uay2YeslWr5F_UbiZbpnVnT1tbgAQBTGDeEQrMngKskN6Dapy1Qf03g_ADIF3THqcxXAP3352SO4UagNSus1usfvVsVh3jZKX6LNnh_th3lrqrM4uyK2grWwOUv_dbcw5WqxZpTXUQ33Ip21V_nPTx8B2HIHwMwzBMKwLDpCzTargY9BOjn4aZvlNMGOfcd5ejsDgNUujnvdRGUdS42fsAXEKUwCXFP9m_AN6Ej5AUSZWFASxPnkRnnsA6q5c8-dqJb2wnEP8PJAindo8o3tvYqM7qmbHwzNg4xCmYmRXAYoiiR-s1bm1Ohe7_o6B4EJRnlNYRSmAKw8EVv-ofi-w-S6ZXrJaA11quM2eeY5kZl8xllllZY3B_35q9oojcPzDO71nT-m9Yt5LBOoBb0dpNZTsdtsZBvEmSIN7k2Ul--hr59qAnEH9Rcu7unifRyJYkT9leFFeUZ-Ly8-AmeQZ22s2Hk-TBAG7XrvekCbVHk20rNbOJoBDT1MmGeRBvJjEo5qJhkdcxQJUtU06UIX76HMpbZytzfpJQXkiIKnAv-D2XiNwT2SDm54W5zX5r0Y3eYeTFRVFuTRqm3a6fcC4wLmmZvS2VHMsxlazM2aKMK5hSBGcbC0disi85JFGyvXMXO_-gwm0VYuf3Hz0rO455KDgnbN0JbFPyXtE6iD-4nWzGdoM0wzdc4ocAbqyx8Uf3u3HbQs5RUxEUwPxMl7fgxh3TN0cG6fYyqXwN-QWL3x3BmdOX69oGDp4FDuc5-ZcM3PvVzaiOqjwns3yKZ2FBYZrE6cSHT1K248nGFSbrqaDKU416-i5vrFoXAXuaGSfpLEDbr0jsqAvRezpI6iSJ05mDybmDuKSvdrA6-qafd-6jr9sf7Lf0PAPmlHd2HJd05nh65jiOo_LVjrcuoV9wshPu2ZS8-8kkInUVR-XMtezMtbpAz7lG75AeVnOrJKZaW-rMNY_YvLcXtEBzL_K5FxHM4-cyc-KF6sQfTctnHmyHSnNRgr5hxJH62EveLdKtjj9ELS8I393l6LEeLo65lQ0TtlZ_V5ReUF1d2yr6o6MCP3kBmyUln1ilkFoecUsbJAglN8zoCw0brbumtX59QHh_aYF1boPtlFvZn5FAO3sKPBv1pTWsGZbAV9og9fCxYcYsjLxTsmacfuuaZmrve2YNDaM8ni_r4ixr4qIgr8qa12XMRiD-pJkewxV_WGCy-9Q7V3IawqKYb1Xl1HNYRgjm2cRyQg1ifJgqpPVnSShftv8iTeYR-62A2D__FyNNwhLmszMmnH_C5hWOkmi6DmxwXzL63yp-sEJVlESzAEZnmRpV5J-Rqe8W-H-rCSNhWJF5wsOzhEc0riaGf5ak4_S7HI2087AhqLWfKYsh8AxvCsDA8j-SryWNq5n_8Vm-lgS_LV9Hhz-8Mmq_EZbn0u1fOdYkLAiep1pylmoFrl5TW5cC_P83brBCOa7mNXX2OQOjMsZ0-qGqOpdgd6ylnIn5deo3o9yHe72UoM8cfT8jvHdyfnVm9Yfx81FS8i-daTuzZXxByN8iP-PORin09NVdNczz6Y53OyYu6_xpvDZkfmURxB96ycj8usLKch_7w9m4XNo9ZGvujZRDtfBe_Cdz713PjvqTKlYzqsZxlaW8uX3HfEwLiOnsWgFm83QsMvtVKlvzGTHxjobkaRzNC8rZlSosSRmC-3vOKnyvDVLmHiPO74-Xl1h3l9erwwXuEpN7xkrdvXB20np-21rSJASOhwlmzhV50EpfOen-vtT9RWd4uqKD5xewTujMlSUvFoXHeWnNPsqeP8vAKK_qMgVe6jtOV4bq8pQ3B21jCf748h0woY3qsH_PgwWWiro3Lkp8Ir_bG9YL76X_kKSS3D02nr3qecJaKmvCIYDbv_6Ky318yD9P-T8zIRXQLeWciR0QzL-uZuHxiXEVxB_HB0dzpn0rO0FAzxCou8OBqvWU-Ik9UP4EMOrcq_OWPrZSUwKqp7c_QGLZNMwCGa0LWJZJVMVFndMCwQInuEJRXcMUkxDRss5JTN6uonV_2XBbxAWMQJCE9R7tBbgi1zEp4xJd0esoj2CYl2kaX-2viwomNM0qkhVlTpIQljmlpMxjRKMyy7Irdg1DmISJTdy4jOI1jAtaRQShKk7zCsdBEtIGMb62hth5unLPrNdFHufFlftbc9r9AwcIBf0JHDGAMEhvr9S1M77qdjpIQs600Scphhnu_mXE7CM5SG__N56jrzrFr3__vdnF4r8DAAD__wQOfJ0">