<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/101337>101337</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Assertion `VF.Width == BestVF && "VPlan cost model and legacy cost model disagreed"' failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          TatyanaDoubts
      </td>
    </tr>
</table>

<pre>
    To reproduce run opt with 
```
-passes=loop-vectorize --mcpu=skylake-avx512 --mattr=+prfchw,-cldemote,+avx,+aes,+sahf,+pclmul,-xop,+crc32,+xsaves,-avx512fp16,-usermsr,-sm4,-egpr,+sse4.1,-avx512ifma,+xsave,+sse4.2,-tsxldtrk,-sm3,-ptwrite,-widekl,+invpcid,+64bit,+xsavec,-avx10.1-512,-avx512vpopcntdq,+cmov,-avx512vp2intersect,+avx512cd,+movbe,-avxvnniint8,-ccmp,-amx-int8,-kl,-avx10.1-256,+evex512,-avxvnni,+rtm,+adx,+avx2,-hreset,-movdiri,-serialize,-sha512,-vpclmulqdq,+avx512vl,-uintr,-cf,+clflushopt,-raoint,-cmpccxadd,+bmi,-amx-tile,+sse,-gfni,-avxvnniint16,-amx-fp16,-zu,-ndd,+xsaveopt,+rdrnd,+avx512f,-amx-bf16,-avx512bf16,-avx512vnni,-push2pop2,+cx8,+avx512bw,+sse3,+pku,-nf,+fsgsbase,-clzero,-mwaitx,-lwp,+lzcnt,-sha,-movdir64b,-ppx,-wbnoinvd,-enqcmd,-avxneconvert,-tbm,-pconfig,-amx-complex,+ssse3,+cx16,+bmi2,+fma,+popcnt,-avxifma,+f16c,-avx512bitalg,-rdpru,+clwb,+mmx,+sse2,+rdseed,-avx512vbmi2,-prefetchi,-rdpid,-fma4,-avx512vbmi,-shstk,-vaes,-waitpkg,-sgx,+fxsr,+avx512dq,-sse4a,-avx512f
```
with the following test:
```
; ModuleID = './reduced.ll'
source_filename = "./reduced.ll"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128-ni:1-p2:32:8:8:32-ni:2"
target triple = "x86_64-unknown-linux-gnu"

define void @wombat(i32 %arg) #0 gc "statepoint-example" {
bb:
  %mul = mul i32 %arg, 3
  %zext = zext i32 %arg to i64
  br label %bb1

bb1: ; preds = %bb1, %bb
  %phi = phi i64 [ %add, %bb1 ], [ 4, %bb ]
  %phi2 = phi i32 [ %trunc, %bb1 ], [ %mul, %bb ]
 %getelementptr = getelementptr i32, ptr addrspace(1) null, i64 %phi
  %and = and i32 %phi2, 0
  store i32 0, ptr addrspace(1) %getelementptr, align 4
  %mul3 = mul i64 %phi, %zext
  %add = add i64 %phi, 1
  %icmp = icmp ugt i64 %phi, 65
  %trunc = trunc i64 %mul3 to i32
  br i1 %icmp, label %bb4, label %bb1

bb4: ; preds = %bb1
  ret void
}
```
Reproducer: https://godbolt.org/z/nPsP7h51n

Stack dump:
```
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/opt -o /app/output.s -S -passes=loop-vectorize --mcpu=skylake-avx512 --mattr=+prfchw,-cldemote,+avx,+aes,+sahf,+pclmul,-xop,+crc32,+xsaves,-avx512fp16,-usermsr,-sm4,-egpr,+sse4.1,-avx512ifma,+xsave,+sse4.2,-tsxldtrk,-sm3,-ptwrite,-widekl,+invpcid,+64bit,+xsavec,-avx10.1-512,-avx512vpopcntdq,+cmov,-avx512vp2intersect,+avx512cd,+movbe,-avxvnniint8,-ccmp,-amx-int8,-kl,-avx10.1-256,+evex512,-avxvnni,+rtm,+adx,+avx2,-hreset,-movdiri,-serialize,-sha512,-vpclmulqdq,+avx512vl,-uintr,-cf,+clflushopt,-raoint,-cmpccxadd,+bmi,-amx-tile,+sse,-gfni,-avxvnniint16,-amx-fp16,-zu,-ndd,+xsaveopt,+rdrnd,+avx512f,-amx-bf16,-avx512bf16,-avx512vnni,-push2pop2,+cx8,+avx512bw,+sse3,+pku,-nf,+fsgsbase,-clzero,-mwaitx,-lwp,+lzcnt,-sha,-movdir64b,-ppx,-wbnoinvd,-enqcmd,-avxneconvert,-tbm,-pconfig,-amx-complex,+ssse3,+cx16,+bmi2,+fma,+popcnt,-avxifma,+f16c,-avx512bitalg,-rdpru,+clwb,+mmx,+sse2,+rdseed,-avx512vbmi2,-prefetchi,-rdpid,-fma4,-avx512vbmi,-shstk,-vaes,-waitpkg,-sgx,+fxsr,+avx512dq,-sse4a,-avx512f <source>
1.      Running pass "function(loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>)" on module "<source>"
2.      Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "wombat"
 #0 0x0000000004f053c8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4f053c8)
 #1 0x0000000004f02b3c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007458cc042520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007458cc0969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x00007458cc042476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x00007458cc0287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x00007458cc02871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #7 0x00007458cc039e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #8 0x0000000003f83f37 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3f83f37)
 #9 0x0000000003f86659 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*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3f86659)
#10 0x0000000003f86cd2 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3f86cd2)
#11 0x0000000002e596ce llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2e596ce)
#12 0x0000000004d02758 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4d02758)
#13 0x0000000000de089e llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xde089e)
#14 0x0000000004d0114e llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4d0114e)
#15 0x0000000000de0eee llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xde0eee)
#16 0x0000000004cff2b0 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4cff2b0)
#17 0x00000000008e3752 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) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x8e3752)
#18 0x00000000008d667c optMain (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x8d667c)
#19 0x00007458cc029d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#20 0x00007458cc029e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#21 0x00000000008cdade _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x8cdade)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWt1y4ygWfhpyQ8klgSTbF7lw4vZs107XpDqp3ssUAiSzQaAGZDt5-i2QZEuOs9OZzVRNzXYqsRAcvvOdH-BYCrFWVIrza5DdgGx9RVq31eb6gbhnoshat4WzV4Vmz9cPGhreGM1ayqFpFdSNg3vhthDEaxCvQB73v-E2aoi13AK8llo30Y5Tp4144TCKatq0AK_t07MkTzwiu0OWIN9PnDMArwG6aUxJt3uAbiMqGa-14wDdAnRDdoe-wW3XsGRbdq2GyrqVfs5BN10XNRSjrnmwZBfm9PrKJsn9XWu5qa3xTVun_sKrxvTYlqez5DRHlDUZoY2EvJLI2YNkzjx1WNhfGrc3IpCP9oLxJ9nNEWrXUMG6mzwthBvB0l5hEs-SKEvQSf-u0Q1Vjn3vrav1bjyIhHLcWE7d0VlZgmivpta7gvfiO6WEUG4RHEzrJnTXh2joCzyPHFCWdxB8xw8nQh6k6zeu7jWyw1F1ENsabrmnE9V6x4QRwTfcCCLFS2Bjt6SH3HUB_D6Y15sVqLRCuRAj2gebylK2dqubAG6IFiq0aN1QeiCsN7qoxWCbE_IUMd9ZlUpM_dFlhBcesuOl9Z9qgAvx6XR6s5lRbMy1HKYXZQ8Vuqd3vduiprVb1Oimz096WIyhiv2RK-7T-6nj0jugtJUtSGcJlS_c6ODlPRHOxyCS-34NyBfaucZuySkQeVoEEk0Q3hdKC7VjIf3Vd1qznq_iVKsdNwHAFXWYQ7UqRTXYSnXdSH4Y6B750kOSH4PQG3lcP10i90pOy6pMcjrym3BEBj2GNaYdAr8v-oSuj0o5GiJiOWcjX_eqo8bwkju6FT1aWHtRWZN0Ktz5ybqwhnfdJhN5nzZPgYitep3lwZpxvELSRn4vIKM95uLOGPZMt-Ww1FLqvVAVdNw6gFcXxQG-gV80ayX_vIYAryFA8xlAG8P9TsxmUgI070Stbg3lj6WQXJGa99LoXBp10o6YijvIiCOSPOvWDfI8qgFe8ahB8xjgFUbhw98m01vfytPwEYljI0ELgFcJWkTlIu5bKnTlw_Q8je5Dt_DdUYOGgUX_h1E3hs7ZOiMaebTssMgf8zRq1ZPSexVJodpDVKn2OKv7ZLwUisOdFgyCNN7ruiAOoIXACAKUEVMBtIQA4RhW1ONaRxxv_J4S8QPx-Q0QgmB-0-EVxTFY0APUrQyM_HWMeQvxSOqFHzoXh8ZJDjoNvfd6ycJASQou_WhRJGM7_C1eQZ8RjeHM9m4IYui2a40UNlsRJPxV5CkE2U1QGXazfh4E2TrcZTcwPXaH3gkQOiF54h2SM62il7E6r1wCBCiruOOS11y5xpkAPO0R4dCGvkkYM7YhlAO0SHyUVCsDbDAoUBsRJYoFOH_tHey5e_l4ELNOGx5G4zeVnHP0gkSKSsF0GnZ8ivuJT2e0j_KYGuupMXYmm4ykBK2bIBYabeXOZPNsJBzcH6S7Vi8aaPmcwmiUUyIZ8D3OKMPSs_uzjEvfzLge23AXVlY_bb6-uIt9HUpH4_G2zjXWryG0AWhTaVZo6Wbar5nNC0AbdWfv5tssUWMu947QJ8jaunlrq4xnIF7eGV0ZUkNiqtaHzwYD0CYc2xt_WgnJTcQPjdSGG98niaoiX64aJ7SykXfnE0CbQqhuIoy0hyBN4-9b17RuZmF0D39WuT-r3J9V7s8q9_-6yoUA33alJ8Cfup048Tvx11YpX936PdJXVWWrqN9gAVpMd0uAb5WOwrqWnOx4VGpDOYu0ks8A3yh9Ej0b8grR0hdnWsE6VMle04TQUAuiS5w-lEhgMVjp0YdKEx1rHxzD-BAPP2kZZ5guoJQ7X3IDvLLPtmvcGaFcOPIeTFeZnIQM2T9q6wwnNUB5qIZ8mvm6ZfE_nnQA3cSHnpb37JF3csYbFZjCe1EpIv9BFJMef9HT6LrtjDb-qI7D3xEI9UDzNFtQGqcoQ3FPXIoCoE1f1I-KeT9AZ1bP8o6enzIhh6eYy3xZUti4reGEPT4JKd-nIMyfKEjPSafzHFY22Ple8uk8n2BnU2y0mJcYkkIb9z7kMHGCnL9CTop3YybFBHM-xcRLvszfhxmmTDAX49zC5QKXeD5aE79q3Xwb1t0dsf0KaYym3Fo_OlkdXcfqA9dDT2nCeXnGOc-z5e9zNq36XDdywndz3BbDUj4N3FMiifm007K9OO51fFalfjXwEL4rPxiibKlNfVFmrWuhiNPmwXD-avRGavq0Mfx7yxV97gBWl5T8KgpDzGWJNa-JYpzdCGdfaVhZ29aNt-uW0O1rBt64FfUB9thfiCKVD9mZ1G-NE7V4IR7nK6-JefpUC-cuSN4ZXQrJ79u6HvP9yBzxKXDMEb9lxuc5Qhn6oRz5sfxYKSKfrbCDc_DthUn-XMo_2E7K0MTOydmAeLbMKR_xZNwRIfswEGu_aMblZbavUmDqnz9kvv_96_u1d9vEr2hy5rIYzbNxrRB8-d84_o3d1Xtj4i48dlfMeLxYfkQa_mlu_huHp3P-JDrpWTInSTqOTveI-0EPlLzXV4w0TpvLBncT3mVuP-VPyEVvzMTa7DwXOX9fLg7m3f6gj_6AE95Kpb-OZzu_TRybT9KIliUq4h9YrJfc-XfxUu-FiZvmk_xbcDzPxqWHaUPy3ImGS6Gm3y7vnRGq-srLS8n3Rq35hdBtwPm9IrGrfs-ltJa_haeqm_D46kOH3zBnZQx59r3jAAWfyLYS6vX-fJK3jnV9xwca-LZ7tzR2o8e6aYVkfTG6vLTr68Y9Oq37naCz4p8iPG97U-obN6IU3AxyhR959_XDsq_LrUnyLabJx_J8TqFu3Bci1IepDagTtcuzr7tLtnznk4UwZYyJ4nNMnsbw8dFPe7SOGPdYn4z6YS08nWpJpg6jjDAOO_wP81cAPWod3pI4bsL3QM66_-XpHmkAvIL3n3-5__TLt078tlcMDXetUdwvAJjg5dlrmCt2jdkSL8kVv07mCKU4S-L51fY6zsqELdM5LjCaJ5SXOaY5L3HBkoIuWXElrlGM0niOkyRNkhTPsqzASZLESUJyTigFacxrIuTML4uZNtWVsLbl10mcYDy_Ci-wbPgvJoQU38MwChAC2frKXPtJUdFWFqSxFNbZE4wTTvLr1eA_CPL422b2L8HcFgK8BngNb7h13zYwLOMcAoS-3UmiINXWwdqf3OGFo-QVoc_jXiYsqUx4VosAmsOSCMnZ7Ko18vrsFZhw27aYUV37bPELv7tEjdH_Dq86NsEgC9Cmt3h3jf4TAAD__2xMYZk">