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

    <tr>
        <th>Summary</th>
        <td>
            [LoopVectorize][VPlan] Assertion "Trying to access a single scalar per part but has multiple scalars per part." 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.body.i

for.body.i: ; preds = %if.end.i, %entry
  %q.0139.i = phi i16 [ 0, %entry ], [ %add.i, %if.end.i ]
  %idxprom.i = sext i16 0 to i64
  br i1 false, label %if.end.i, label %if.then.i

if.then.i: ; preds = %for.body.i
  br i1 false, label %cond.end41.i, label %cond.end41.i

cond.end41.i:                                     ; preds = %if.then.i, %if.then.i
  br label %if.end.i

if.end.i: ; preds = %cond.end41.i, %for.body.i
 %.in.i = phi ptr [ null, %cond.end41.i ], [ poison, %for.body.i ]
  %0 = load i16, ptr %.in.i, align 2
  %add.i = add i16 %q.0139.i, 1
 %tobool.not.i = icmp eq i16 %add.i, 0
  br i1 %tobool.not.i, label %m.exit, label %for.body.i

m.exit: ; preds = %if.end.i
  %.lcssa = phi i16 [ %0, %if.end.i ]
  ret i32 0
}

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

Backtrace:
```
opt: /scratch/tc-testing/tc-apr-2/llvm/llvm/lib/Transforms/Vectorize/VPlan.cpp:249: llvm::Value* llvm::VPTransformState::get(llvm::VPValue*, unsigned int, bool): Assertion `(VF.isScalar() || Def->isLiveIn() || (hasScalarValue(Def, VPIteration(Part, 0)) && Data.PerPartScalars[Def][Part].size() == 1)) && "Trying to access a single scalar per part but has multiple scalars " "per part."' 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 --passes=loop-vectorize reduced.ll
 #0 0x00005ed60f56eb60 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2d84b60)
 #1 0x00005ed60f56bf6f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2d81f6f)
 #2 0x00005ed60f56c0c5 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f973de42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007f973de969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007f973de969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007f973de969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007f973de42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007f973de287f3 abort ./stdlib/abort.c:81:7
 #9 0x00007f973de2871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007f973de39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00005ed60e6cbb72 llvm::VPTransformState::get(llvm::VPValue*, unsigned int, bool) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1ee1b72)
#12 0x00005ed60e6fa9a6 llvm::VPInstruction::generatePerPart(llvm::VPTransformState&, unsigned int) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1f109a6)
#13 0x00005ed60e6fbbdf llvm::VPInstruction::execute(llvm::VPTransformState&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1f11bdf)
#14 0x00005ed60e6d74ff llvm::VPBasicBlock::execute(llvm::VPTransformState*) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1eed4ff)
#15 0x00005ed60e6cd9e0 llvm::VPRegionBlock::execute(llvm::VPTransformState*) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1ee39e0)
#16 0x00005ed60e6d90e6 llvm::VPlan::execute(llvm::VPTransformState*) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1eef0e6)
#17 0x00005ed60e5d76f3 llvm::LoopVectorizationPlanner::executePlan(llvm::ElementCount, unsigned int, llvm::VPlan&, llvm::InnerLoopVectorizer&, llvm::DominatorTree*, bool, llvm::DenseMap<llvm::SCEV const*, llvm::Value*, llvm::DenseMapInfo<llvm::SCEV const*, void>, llvm::detail::DenseMapPair<llvm::SCEV const*, llvm::Value*>> const*) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1ded6f3)
#18 0x00005ed60e5e9718 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1dff718)
#19 0x00005ed60e5eb73e 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)
#20 0x00005ed60e5ec88d llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1e0288d)
#21 0x00005ed60d4f3276 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)
#22 0x00005ed60f395141 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)
#23 0x00005ed60d4eabd6 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)
#24 0x00005ed60f393e3b llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2ba9e3b)
#25 0x00005ed60d4f2dc6 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)
#26 0x00005ed60f391cb1 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)
#27 0x00005ed60cd6cce5 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)
#28 0x00005ed60cd5f316 optMain (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x575316)
#29 0x00007f973de29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#30 0x00007f973de29e40 call_init ./csu/../csu/libc-start.c:128:20
#31 0x00007f973de29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#32 0x00005ed60cd54f95 _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
```
Godbolt: https://godbolt.org/z/jYWea8z4q

Found via fuzzer.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWl1z2ziy_TXwC0osEvx-8INkWfe6blLjilO5tU8qkGhKmFAAA4AeO79-C6A-CFpx7Nloa3YnFdsiiD7dp3HQAAlRrflGAFyjdIHS5RXtzVaq644axeuvM8Ufpb6qJHu-_gSsr4HhDx--fMR3n1C4ROEcZeHwv20fd5irodVQtQGDGTW0pc-yNxjFS4wIgdkOxXOYdSieZ4n7NePHDxEpUDyPSDETMRnaHmwbIR6sUbxr4QCpuK4fs2TWi69C_iFmLRf902wj-qPZ8JtBwwVgHhOMknBHuUAWusSIxCFG-WLoBsKoZxTvjXClcEsraDEiaSNVYDMR8DHuqDWeYxQvcKeA6X14KW8CECzgiNzYywF-wLbX34IwisuAu-7dlmMeZRilCxyODTBKl-46Xdg2yk6AB3zX5YTL2VOn5G4PrOHJOOQQG4ltwvc9K4V5hBvaarB4R6rjqMeNZgvCp39qPMd-mrIfe6ylYNZnEk28ejdGjr32eI7f8u_c6OyjP2ZzTBF7439Mik9_aDvHfsrpXEIQSQMuRgLojHLjLPq23RuNccZS6CTXUrxAnkghdNCtpMxKwPZ2LvZ-7TVt-UZgMrJxCnN2lLFBkyetWpPoFL6RlZRtIKTZm_B612H4djA7qjX0NTAx9QZ9F8ATN17T-dm37_jqzDvRCtpaa_pirtkkvTKdFBhXNvbxo3w5joAao3jVG9D7SmK95xaUDPVq1gA1vQJtC1K8tL_JIksqxw-RxSMiBJ9ADwV17GNB669G0RqOhWnSTXZDDshK14qaeovIytQzA9pwsRkuaKdmBJGVrdSjP7xCZPVZUaEbqXYakdUXqI1U_DvYz_ctFUHd2YJNktI6cYbxHMXzL7TtARGv6f4I9WCogaF1AwaRYtzrYGrT3gu3BDHMhRtyqwlEnK-51qAMlwJbqqT4sgq4fqhpS9Wheuc3KL_BS2hmKL7l-gN_hDvh30Sk2NK92d5xsYTG-vpyf2dAUesCkeKeKjMolZTD0pAhkuElNTS4B2VvDygapQuLkC5RunBW6TLQLmWD43hpdRD5OIiQz-qZi42twrSuQWtMseZi0wLWDhh3oHBHlcFVb_CWarzrW-PWu6GDVRmxP4eOgRNUjhvKW2DBoIf7D7fzh1us-2rHDaa46jdYQSeVsa63xnTajgRZIbLacLPtq6CWO18cs07J36E2iKy41r3V7wpTYYepbnsG2GwB14rqLa4O-ty7fzC0_opZv-uOgg2DoQTfK7lRdIep2vQ7EEa_WbdVz1s2U49Zsqkfj9cuUrfm2ya7qK9kZ_Bs1lGtQaN42UrZzR4PmsZq2MYEbXssYXGIw6cwDMMUWBY2aQZVFo5ErZ_18OFecWEcuc9uNo41regfa6mNArpzw30zyNkOfvHL-SGyCJ8IK5Iqc1o9MokmTKoma84x-dSLB74RtP1fKlgLSh83Q5cLNmqyxguWTIKtwzrFXliIFPssDs16X4pC93MEivdAeVPmMYOEpCTcUxnq21ORrbNkvDe0N-pAyyBz4TkTL7jExyyzsqnxet2ZrQLK1l952675rmvBqtgVEBwgshKdaRFZjbsFNYrnid3k5tkJP30LvjCgBG1fRc7dpnmUjewc8tjsVbiinMDl0-QmeYY32o2HQxo-IrIK3NWzZtDZYtFJza0QFOUaHDbJ7a7-BF340KTImxjTypYpB2XYMHyuaYgusoxPCOULhKjCa9Gu7X5nzaTd5zssLhxd27zTm5oOcFGU25D2w27nT-gDxiWU2fuk5EyOUrKY3qSErK6qnFxmzbzc_I0AoionHi_i82poSTOP153QRvW1W133pIRdbWG_mE4ITtIwVFGf6SUZNlFYUn_k4gnDqmLN6wzhCerewM-ZXZZJVLHGY5L4TFieND6TBdW8XrSy_voeIvNLi44ljU8knUwmVkLoEfkEGy7FX49JXELoMckmQ1KG4E-flr5LVBdn0ITgT4_cY5CyPGviEYMPUnaHhwm3QlpGApRHyrEcE7sdltQb2Q-lbVrqphkaysSp9c66GLu224hJn6XccUGNVJ8VHErqUEK9XiA0fKQdim9OjQ83t19wLYU2e7uXz0PnUe5EI19HepScofjWN2dgKG99qHvK1buDim9RfDvqdEmtMGBZE3taKXytQJlHxQ-0AvdU7_epnZL2Mcne9UQyNFyaRdPkUeGxKCcsqjyGn7NQvbjbda3HYNWLYdmYanN4wrx9lG1_9r714bQ0vfHZvW44VoWzfSbCn9x1RXOl4FsPon4eAObnnHzglaLqfI8l7KhgwBbc6Bce5lr3u87yuqH19mUEltzcPRlb7I9U0M2Z6ftbZ_huX1M-wY6qr7c7bsyZnvdKNryFh363G8d70ToZRnkMY9WQcKKauijYm1TzNsXMBW2fNdeHdI0rw9HI1pULbzsgJEXBPObe1pclTUzy7AfFzRL_KBm05-N_IRM_Y38qIfb_f2KmWViS3FuKif8sHZdplETjeWCT-1rQf6v8kYpWURJ5CYx9pQKt2K9Q6sUS_7caMBaGFfMFn0wEH0NcjQL_KFnfwmd5CNKOw5zRzkh1PgWDwbsSsDf5t-i1hLjy-KeTykpY_T69HgjfvDFrfyItP5LbXznXLCxY7Ustm0gtqqu31NZzCf7vzRupaF5Xfk31ng9rltU1pKO4Ve8Eds87aLnwH28fjOJi82k4pflpBoZd6Udabx3Oz_asw2Z82kvK9rfedL1Z8fYMyL90-wd05krRZ9s6HjKXk7bfcPGyzp_6a8OGtuZYhm_sAyT20mixFnbo9nvj8tzqITuzNvbpd9hcOxb_xwV7rdcXULzhoA79Dk_P7_t7QT2mBakh9eRY-HJMmzjKsOzMR8rFBQPJ0zjyC8r0rXXJyhCv1y2v6rU2VJl1Tdt2fXx5Xev-5ev1_Qv8c0bBFsXz1J0LZEevcTj1CkmInQ0X3EwdDR8t-syhD-_L3Td0SHgCjc6BelTOsTgLHuelDfuETSbjlTRligfUCw5XRpvypJvv2uYS3_32GfPTu17rvpYK3BknsEHIvzqacwf9_yNZJVt32D85xR1uBFJZl98RWf3-j_8HWnxPvo2_SbCSvWD4kVPc9N-_gwqu2HXMyrikV3Ad5REJy6hMkqvtddIAhEVTNE3G8iiukrhMk7gIayjjuqyzK35NQpKESUhIFKZJHDCgUUqKJEwZFE3BUBLCjvI2sPxsYFfuHPm6yJMovHJf7NDua2eECPgDu5uIEJQur9S1y0nVbzRKwpZro08ohpvWfV_NewoczuKHV4LpcvzNgV9y6j4-bj-ctV_1qr3-84fpLg__DAAA__98D_0A">