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

    <tr>
        <th>Summary</th>
        <td>
            [LoopVectorizer] Assertion `hasKnownScalarFactor(RHS) && "Expected RHS to be a known factor!"' failed.
        </td>
    </tr>

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

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

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

<pre>
    Testcase:
```llvm ir
; ModuleID = 'reduced.bc'
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"

define void @d(i1 %tobool31.not.12, i12 %0) #0 {
entry:
  br label %for.cond

for.cond: ; preds = %for.body, %entry
  %a.promoted5561 = phi i32 [ 0, %entry ], [ %op.rdx64, %for.body ]
  br label %for.body

for.body: ; preds = %for.body, %for.cond
  %u.059 = phi i16 [ 0, %for.cond ], [ %add35, %for.body ]
  %a.promoted5658 = phi i32 [ %a.promoted5561, %for.cond ], [ %op.rdx64, %for.body ]
  %lnot.ext.12 = zext i1 %tobool31.not.12 to i32
  %1 = zext i12 %0 to i32
  %op.rdx = add i32 %1, %lnot.ext.12
  %op.rdx64 = or i32 %op.rdx, %a.promoted5658
  %add35 = add i16 %u.059, 1
  %tobool.not = icmp eq i16 %add35, 0
  br i1 %tobool.not, label %for.cond, label %for.body
}

attributes #0 = { "target-features"="+v" }
```

Command/backtrace
```
$ /scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt "-passes=lto<O3>" reduced.ll
WARNING: You're attempting to print out a bitcode file.
This is inadvisable as it may cause display problems. If
you REALLY want to taste LLVM bitcode first-hand, you
can force output with the `-f' option.

opt: /scratch/ewlu/daily-upstream-build/llvm/llvm/include/llvm/Support/TypeSize.h:280: constexpr llvm::details::FixedOrScalableQuantity<LeafTy, ValueTy>::ScalarTy llvm::details::FixedOrScalableQuantity<LeafTy, ValueTy>::getKnownScalarFactor(const llvm::details::FixedOrScalableQuantity<LeafTy, ValueTy>&) const [with LeafTy = llvm::TypeSize; ValueTy = long unsigned int; ScalarTy = long unsigned int]: Assertion `hasKnownScalarFactor(RHS) && "Expected RHS to be a known factor!"' 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/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt -passes=lto<O3> reduced.ll
1.      Running pass "function<eager-inv>(loop-mssa(licm<allowspeculation>),gvn<>,memcpyopt,dse,move-auto-init,mldst-motion<no-split-footer-bb>,loop(indvars,loop-deletion,loop-unroll-full),loop-distribute,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-unroll<O3>,transform-warning,sroa<preserve-cfg>,instcombine<max-iterations=1;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,sccp,instcombine<max-iterations=1;no-verify-fixpoint>,bdce,slp-vectorizer,vector-combine,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,jump-threading)" on module "reduced.ll"
2.      Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "d"
 #0 0x00005d9f263c7fb2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x34c8fb2)
 #1 0x00005d9f263c501f llvm::sys::RunSignalHandlers() (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x34c601f)
 #2 0x00005d9f263c5164 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007431bf045330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #4 0x00007431bf09eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007431bf09eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007431bf09eb2c pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007431bf04527e raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007431bf0288ff abort ./stdlib/abort.c:81:7
 #9 0x00007431bf02881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007431bf03b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x00005d9f251c9646 llvm::VPRecipeBuilder::getScaledReductions(llvm::Instruction*, llvm::Instruction*, llvm::VFRange&, llvm::SmallVectorImpl<std::pair<llvm::PartialReductionChain, unsigned int>>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x22ca646)
#12 0x00005d9f251f82ec llvm::VPRecipeBuilder::collectScaledReductions(llvm::VFRange&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x22f92ec)
#13 0x00005d9f252123aa llvm::LoopVectorizationPlanner::tryToBuildVPlanWithVPRecipes(llvm::VFRange&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x23133aa)
#14 0x00005d9f25214812 llvm::LoopVectorizationPlanner::buildVPlansWithVPRecipes(llvm::ElementCount, llvm::ElementCount) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x2315812)
#15 0x00005d9f25214f2d llvm::LoopVectorizationPlanner::plan(llvm::ElementCount, unsigned int) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x2315f2d)
#16 0x00005d9f25216ed5 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x2317ed5)
#17 0x00005d9f2521a2b1 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x231b2b1)
#18 0x00005d9f2521a877 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x231b877)
#19 0x00005d9f23ecce55 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0xfcde55)
#20 0x00005d9f261b33aa llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x32b43aa)
#21 0x00005d9f23ecf595 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/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0xfd0595)
#22 0x00005d9f261b1c84 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x32b2c84)
#23 0x00005d9f23ecb315 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0xfcc315)
#24 0x00005d9f261b229d llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x32b329d)
#25 0x00005d9f2365ed61 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) (/scrat
ch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x75fd61)
#26 0x00005d9f2365089c optMain (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x75189c)
#27 0x00007431bf02a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#28 0x00007431bf02a28b call_init ./csu/../csu/libc-start.c:128:20
#29 0x00007431bf02a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#30 0x00005d9f23646ee5 _start (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x747ee5)
Aborted
```

Godbolt: https://godbolt.org/z/3Gaar59K5

Found via fuzzer (C program before reduction)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWltz46iX_zTkhZJLQhfLD3lQnHima9Iz2SSVqXlyIUA2EwRaQEncn34LkHyL05Oe6fTu_qcrnVhwbr_DuQAyNoavJGPnIL8A-eUZ7u1a6XP2LPqzWtHN-T0zlmDDQFqBuAJFHH6EeGoh124ovYCfFe0F-3QJQXoJAZpqRnvC6KQmAE1BXFmsV8xCii0WeKN6OxAiFrUgrVjUgbQqMv8r4tsPCSpBWiWojGSKwtidG0NoJ9Nq3gk2ytPckKcii3r5KNWzjASX_Uu0kn3gAXFFWcMlg0-KUwiymAJU8gQClFtVKyXSZCKVnSQIoDnkCXIzMUAzCFAaQzC9AHHFpNWb4A8Iaw0FrplwhI3SE6IkDZq2T2kFnZM6zagZDPWkzr9ODUB5EOnkAZTjSadVqyyjeV4knqNbc8hTBEF-AeN9HgjyS_-cX7gx1U00fSmygWTU4qlOWetN2Frrn95h7R5Ob3A_ifPZzs6kOLBzpD4yFVOa5m_ZeeiFIi9feeGVn76u7a8cA1Au3MKzF7f4XtsX9mLhydiAVjk7RsZknzxEzBFF0O7JMKUBA8pHk_cUHzIUmWdReuQIwwPboYO2bnNu3WlyazEskGNLRrKAyOHxtJy0HWT_PdJv1yYeo2bfD47LTb6O--PBMbymlyHIsLWa171lZsgnF15Tt0AopHPUMGx7zYzL1_TS_UYXTwAhOMgY60-QN1dti53eRY3Jo9WYsGMilEGAFoZobMkaoIWrbAAtKOZiE_WdsZrhNqp7LrwY9zdakaftZ1foQhlxQ1wCtFCddRZHHTaGGZBeCqtAOv8tBemVM3WsfkKAuPq9uv31068_ubT6Q_W-NkJsLWs7y-XKxUmnubTQFUUMa26Jogw2XLAJiKv7NTfQ_UhMn7jBtWAQG8gtbPEGEtwbBik3ncAb2GlVC9aaCfzUgLjaqB7eXlXX13_AZyyt02SxsQxeXz983lOkjY3WOCzeRvUgrgiWsFGaMGdU11v4zO0a2jWDoIijBqApVJ3lSk7CKqjO-qrxfjc7p-7-cElET9lu4K7vOqUtQIv7Tcfu-Bc2WYO0QmXs9BAljWUvnYaePK1AWlFmMRcmPCz4C6O_6TuChXPYf_VYWm43IJ1fM9zc-yr2gEXP7jduxTyPJ9b3m-8pc8XsL64LBdkLTKzSAJXe_u-kBxWuNwWJIL_wCxUIfW7tlIyOdKV94A8USq5gL_0mgEIurSPYOuM0RX7plqEyhmkXBS4q1ticgnr7813onQVArrCgq5eOEcsovP35zkVkzSCGvlXDZmBKfNJPYYO5YNSF2M31VXV3BU1ft9wnSb-CmrkIcSLW1nbeeWgB0GLF7bqvJ0S1h2EWdVr9yYiLKW5M7wrMAmLpAPng8-FNNDZruC0lTvedxeQR0r7tQsOPJ9D_u9FqpXELsV71LZPWfGMGvLvQnKwyhyUmGWy67aV0NcVxOGc3vSRugUA6Z3jFdMTlkw-aUijVRa0x2H3mpAXpHAuhnk3HSC9wYLoCyPWM1ZMT4B_nLWtJt3H5jubUMDeinliEe6siLrkbbgU1NmrVoFiqyHSC26hRyjId1XWQ5CxwWy9Jn7A2w0BEmWCecXjupVZCRE0vRDAmUHEztJFx5Im52PHh7TRyaZkWDD-xyNcxGikpNiC9kGpHejQVzOKyYTrCgq-kW9VDO3Y1fm41lqZRuo2esXZOB2hutMIgnXeaGaafWESa1SjUWKLamktnX4tfIm6Z9l5265qMhmnebKKGv3TK56FjNbztBG82Xta8VrI3kRMX2bVmZq0EHQQ0Sj9jTSPzzC1ZR2HfeTE8aSxXLHJrRFwcj8NWRUKpx74LBjwy1rkBl00Xa8WNjYhqWyW9RhOIwrhQmJrIWKWZiVzR8QqjBvfCdTWngsvHY_YxulhUC0Ue_dCAL_DXGkuyDop2xL10e1FOrCuIZvALId0_82xNiQsfI_aiRwM0Dw_RKPVUSPwDrd-SeFuVUaNVG2Fj-rYLStD8z77tfBBg6qNv5jYeSsLWn8T8UWhXIvzZB71RJb5rAnkbxrrjpNOgPGz34pc4juOczhpUpGTa1GivQ5nN0AJv3H7I1917v6FD5Y5I4-elCqXUN5W5b0i-xZQfUH0Buohf0oyUTY2cjwOQ5AhIHifNKSC3vbzjK4nFz1hSwVyZKz_e1iJOmp2t6NjWpMjggVW-Cvv9vOErLhu1tABV7tmdkf3H2cBhJqRzfTD2_4OCdFAwzdKkbuIsT92-3iMUvAZo8VIWyyLbP4m7CTIxalJ4mz3LzuLsUOCM1YjA5bILwb585EIsXdVgLjV8xsAJQAvZWQHQYp9sQkBaZRlIq2kxCM_fI9wFv8Tiq2Kn_mZidEJxSuw-z1dllbN9WdNjh6Ipgxpzw7wQ41cCoMXEP20MZZ3bzHTKcBcPntKLRVOQViPw8lAqKsumgbh2eygvx9KwWn4oWJU4mAP77BV7UsOlFEvXCZZUtZiHZeDSY3TDrVkRHGQlydQZM_MHsjSJD6WldZ5Mvy1mPEuIGSfwICPzhMyKrNjLyIebW0Z4xy5c-jC93Z273Sqjt65QDnV1r9R8ksbqMDHkw_vmHha3rt0O5Wk3ftdiIR588fzUdm4zYSwNUx3mGqTzHe0N1pZjsbVsvsYuzedHO_Wr3RHgA2sKQgQXWbHzNjr0dlMiRv7K20QJwcjXPb7vuQ9G1MwQIztE6QEilKAU4z1E10p1D0Pb8xXnRmApR2hWb-6VB_vgxn_ndj264H8LX5qkKcY7fNkRvqxM0Lvx1Vto5m1sV6Eez1UfeslbMx-NOy8TtMOdH-NuEH037k5g-VWMB8n48cgat5kakRVHyApG8zeQsRtshh1JpxVhxlyHw9ch-dDpPxbElNF8B2J6BAKjOvlrELqXvoDuA1iMR90fkVs1qpMdiPIYRDmdvgvE2wD206eSWGwMN5-xdGf4gzaxZfohbSBN6nK613Rn-8BTRgjL81fXWmM_M-azokycNv8A8GuH_S1_jJdw__8c3RDK8l2WoMNzU1Knh83J-_ZrNv_L3JeiOttvfig5itMmn32POP0wv__L1quhcT7bC3d0FO4JKbM9u8Or5ns12uiWoaK4s0qf9kBg-Cb8A8sPilZEymwHPz2K1trtYr4lWke883c67W945a1g-7_t6oaQNNkLtOwo0BCa0Xfk9yn__ie7LUV1ima7rSc62FSnRc5osb9r070PrxveMeFvUPeQ3lnN5eqWNafC85UD7v0r4c-YrL2c6tTsNa811ptPslFhU3hMpZT4zb_FXHBxQsg_mn4DTqU13rjRwyO9MTeiX3H5usbv6LdXAnvvbsJXVfbd6GSNp2u__qc6h-rs0io11IqA4hc-vKR_g-qBad5wpke62s1889-DcARx9b0jcpo3tNjtwFFxFJBxOSNQdfYz5vIjM2OaJ-Vsd4uAjm7uEE4Ihsul4DVZGou1XRIsxHJ7V0ZM__oeb7gkPMXkX4JPM5BW6aDx-FYPo7KGnp5Lbo-VhI9OcuQlh6s5_x0rFA8Sjy_6vMQDDKfMPyk5zaYgrfIg-PD2Py2ygrEcBpEfukbZlLGh6Fe10pbR118j-UnRWgn_JYajt8lhYqL0CqDFF4AW6U8Y63z2Sx44F6qXFD5xDJv-yxemHZQ57IaXwzVrlGbhZW3YhM3O6HlKZ-kMn7HzZJrlGZqhWXa2Pp_lRTJLy5jWOU6yOmsyUlNcz1Bcz9KG1mf8HMUojzN3bkZlkk1Qg7JilpUloyShOQNZzFrMxcS5w5l85t90nyfpNEbZmf9ijvHf80NIsmfoZwFCIL880-feh3W_MiCLBTfW7MRYboX_guDB0UyD_PJHfQngrNfi_O-_6B888HSO_icAAP__UXfaWQ">