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

    <tr>
        <th>Summary</th>
        <td>
            [LoopVectorize] Assertion `Offset <= State.VF.getKnownMinValue() && "invalid offset to extract from"' 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 testcase:
```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

for.cond.cleanup:                                 ; preds = %for.body
  %.lcssa17 = phi i64 [ %0, %for.body ]
  ret i32 0

for.body:                                         ; preds = %for.body, %entry
  %0 = phi i64 [ 0, %entry ], [ %1, %for.body ]
 %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
 %indvars.iv.next = add i64 %indvars.iv, 1
  %1 = load i64, ptr null, align 8
  %exitcond.not = icmp eq i64 %indvars.iv, 22
  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
}

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

Command/backtrace:
```bash
> /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt -passes=loop-vectorize 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/tc-testing/tc-compiler-fuzz-trunk/llvm/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp:569: llvm::Value* llvm::VPInstruction::generatePerPart(llvm::VPTransformState&, unsigned int): Assertion `Offset <= State.VF.getKnownMinValue() && "invalid offset to extract from"' 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-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt -passes=loop-vectorize reduced.ll
1.      Running pass "function(loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>)" on module "reduced.ll"
2.      Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "main"
 #0 0x000055972ae01800 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2ed2800)
 #1 0x000055972adfec0f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2ecfc0f)
 #2 0x000055972adfed65 SignalHandler(int) Signals.cpp:0:0
 #3 0x0000728161442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007281614969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007281614969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007281614969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x0000728161442476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007281614287f3 abort ./stdlib/abort.c:81:7
 #9 0x000072816142871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x0000728161439e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x0000559729f62d80 llvm::VPInstruction::generatePerPart(llvm::VPTransformState&, unsigned int) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2033d80)
#12 0x0000559729f63155 llvm::VPInstruction::execute(llvm::VPTransformState&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2034155)
#13 0x0000559729f2de47 llvm::VPBasicBlock::executeRecipes(llvm::VPTransformState*, llvm::BasicBlock*) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x1ffee47)
#14 0x0000559729f2e141 llvm::VPIRBasicBlock::execute(llvm::VPTransformState*) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x1fff141)
#15 0x0000559729f30286 llvm::VPlan::execute(llvm::VPTransformState*) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2001286)
#16 0x0000559729e2380a 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-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x1ef480a)
#17 0x0000559729e34a7c llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x1f05a7c)
#18 0x0000559729e36f7e 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-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x1f07f7e)
#19 0x0000559729e380a0 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x1f090a0)
#20 0x0000559728cc6dc6 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0xd97dc6)
#21 0x000055972ac1ce46 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2cede46)
#22 0x0000559728cc9f56 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-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0xd9af56)
#23 0x000055972ac1bbcb llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2cecbcb)
#24 0x0000559728cc6526 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0xd97526)
#25 0x000055972ac19d02 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2cead02)
#26 0x0000559728520136 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-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x5f1136)
#27 0x0000559728511d51 optMain (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x5e2d51)
#28 0x0000728161429d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#29 0x0000728161429e40 call_init ./csu/../csu/libc-start.c:128:20
#30 0x0000728161429e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#31 0x0000559728507b85 _start (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x5d8b85)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt
```

Found via fuzzer
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWltv2zgW_jXMC2GDou4PeXAu3i2mmQZJ0MU8GRRJ2dxQpIak3KS_fkHKF8lxmqQ7NTCYIk1kXj6e7_A7hxeLWCuWivNzkF6A9OqMdG6lzXlLnBH0cWLEWtuzSrPn8zvOOsoZdNw6SiwH8QygK4BmIEP9j5TrBgrTlzpiltxBRhyR5Fl3DoL4CgKM-aQB8YxPWhDPsiT8mojdQ4QLEM8iXExUjPuye1-G8QjWGdFKvoU0wtJ1lkw69aj0NzWRQnVPk6Xqdt3634zXQnEoYgxBghoiFPDQJQQ4RhDkF30zrpx53tGDlYGSVFxCgNNam6n3xhDVl1Gt2JRKTlTnecG3_oH4AraGM7uhcAAMfdFUUmtJlIcm7UpAkSUQpBe-DgF8OewGQXq17Wq4CxTRoZEB_x3GvW1kP3jvp73B6IWlaNgy2Og_9xSi1ykAnArF1sTYqVh_CHTfbar4k3vnEKFtGIcw1o8zrPYo0YBnFJpKTUJbX9s6A1UnpX8mUiwVLAbt-ZNwQSBK96MI2rSQ_3l8pK1koReeiA4BfJORHEfSO6wcaDW_GuqBOGdE1TluN-L3M5x7H-I-xCY1J64z3PoYiq_8b3yRJZXwFgB8se7_fF_LCBfV7gNOswpgDPfDbbPDcPRL3TREMYDnFaGPzhB6JJ1UxK42RfE1BHhuqSGOrgCeOzrxaUioZf-B6qYVkptJ3X3_PnGmU48euxOSTZZ0vXv2GarPDr7Ih_9ctw5OWmIttyC-klq3kzWnThvxnUPT57yplL0h_5nd_f7p93_5IPpDdwDnhkPiHG9abwt0GrZGKAd9uiOw8rPGOKyF5NMe4GElLPQ_irC1sKSSHBILhYMNeYaUdJZDJmwryTNsja4kb-wUfqr73s-6g3fXs8-f_4DfiHJ-PEes4_Dz5683g-GMdZNV8O8lfNZd35kSBWttKPfWtZ2D34RbQbfiEGRoUgOcQ906odV0OFO6dZ7tT3jf-3rwR1QAzx8MUbbWprEAz79u3eyfbyVRd5yKltspbX0OTbPSjxz6xzMQz74S2XGAR0W3n5R1pqPe7r5oyRU3xPFbbm6JcQAXw-Y7A-4dcRzgzLuoU2ENZFAoB3AYdWYtNx7UO-dLXVvuI_fSR0noOf06ny65-80vNzdCbUzbrCUZwJkPJKHWRAoGdd_facifvNYdrI1uQkTlsCZCcrbx-e3n69n9NbRd1YigoG4JDW-1Cb1XzrXWM8FzgOdL4VZdNaW6GTt70hr9X04dwHNhbecDeA6J8uyo7BgPU04NsSu4C77N8PeO0EfIuqbdRSOa9mvBrdFLQxpIzLJruHL2J1Xx18dktLHwrlPKB6Hv571fd6qXBS7GCCC-VHoilONGcrLmkxAVbKKVfAbxhdL7pgdVIL72-sAYagUbzTq_BcF4YNE2eeNXjPpLLQlmbGl69H5Hg3dLXIwgekIIoTQtc0w4igqEBuFjn23_cOuzVpj9h5CLh0FjyLeFts5w0mzipQ8TGPT-ywQA8AV6wpzhAiHv9B2naMSJ1Zyi-hinu07di6Ui8t9EMcmN3cXnCcymNUX1yGx8aDbLUjgyEOBi49m-eJsIUfi_A4o3QDkuoixKEpxitCHVJ9mnIltkyXAT7Cvo1OppFswLXUbGJWPMMitrCheL1q0MJ2zxKKRciKaV3Ic-CXKbAjxXrZMAz4fNphTEs8Tv5vNsj5--B9-HgSLyh8h5OB0MvJEdQx52-yFcUR7A5YfOTfIMLm2Yj4DUPwI8n4ZPz5bx1mfYVlvhhWCIsDxg49wfX_bQxRgaF3kdQ1L53B6gHOunLxT11kWe8R6hfIEQVXCh5MJvRRdM-_APWEIFur64sUtKergoyr1Jm2n3kYTGgHHJy-xjUgpddlLymKPwLOsMswL96hX7JDGN4pgVaMQVH3CNozT9MVf-xGnn-NscT8UpidJ0xCkec8KMJ_mI0wWxgl5ITR9HlDabtzeYzcIJZddggOWrTkI6qmvOk3xEOjkgzaMkGk_k3Su03-Z7KlJ1lEQjUumYVIxwkY1ISfIhVZ6KC0YowsU4q2QjLhzHBSIDLp-1brfHibA8eW6KmxG9wHdI8bpfzy51p9zLrHL5wld97tmXfvJDDIf2a_hBmyvdCEWcNg-Gb_VfaS0PWnFl-Q1pQXy5L7y_vP4KqVbWvYib7VHoOMonVesfI621YGELOezOuCNCjqFuiTAfNiq-9gf2faPTRACvkwKRkWrysWrihOT0FdXwW2I3G8fWaMqt9bUjufQFp4tolJKcjvgUB3yyOudv8zGd-tS0csRlvjscHej1nhJJzPVay-5ovR8j6Ouw4iHcGu1yxtE2B8FwUBuS69zwPzuu6HMPMDs2yGdRGWKOt7jiDVGMswvh7IsRZtZ2TbjjuCR09dICT25G_eR77BuiyPJISH9pnWg2eeaON8Q8XjfCuSMtb42uheT3XdMM7T2VfvI65yP9lAf6KRBB79LP-7QzU0Q-W2G3jhvmjV0nn3VOtb-JalQiMtqz4dGRuKA0YzR7JQl6F9xoxuVxJi-kM_bdT7nG__y9fc7KnNHR4o3HJ3YaUZ4MXR7c_CPz_6GexJQznoxdiQ_UW9bpX6HeXzYF_9CpYyWp0_HMxQdBUFW0GlC4CbeJD3prrp-RGSOt0-a4M_oOH3LFpsuJNUwrWo08kRxm4BR_TMNb6pfv9N9POOg1Cf49vM7KPMVj-aUH8isZwu9IAMdc_U_wIKacMIRHLhydQYsUoyge6tZ0QXS3ouVSqPFh-t4ZoZZ3vD4m2le20jeErgLOW3vgfnN_2Epr-SV8zzcX8gjI_1X9Cp2ZMeTZlw4nL_hEdkuhXq4H-_bWsb5s961NfOkPqXDkRo914adus9cuj60yunUL50_Y_WY9sPhN9F-GvtbqKzeiFtxs221P6B_7exJlpnUUxePYzsfCjCKWRlC37oYIdRKTOGbp6O4JH152l6xEcLGQoqIL64hxC0qkXOxurKntXt6pb27tj3WarkA8S8OXAdl-1MML8pInCIY-Qgl3OFD_6NEnAb2_JA_vH2G0A43RMdARlWMsjoLHeenN3mNH45lDeVWksEc9ycSxoir217_frfcq_PTlAYr9xbU3hGrDw_fCnPUy_3V2vf7SyFx3isG1INAjc3PGzmNWxiU54-dRHpVlgtM0O1udZ6gqs5TRCOWIlDSnZcQzjBNUpgXGdXomzjHCCcoRjvKkjLJpyhKE07RIyyhLMCpBgnhDhJx6I6faLM_CV-nnZZ6k-Cy8YWPDG3MYK_4NhkqAMUivzsx5IFZ1SwsSJIV1do_ihJPhVbvRcRGkV6d_4eCsM_L8598o6D2xPsf_CwAA__93hW1h">