[llvm] [SLP]Initial support for (masked)loads + compress and (masked)interleaved (PR #132099)

David Spickett via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 9 05:53:44 PDT 2025


DavidSpickett wrote:

Reproducer: [oggenc-6b745c.zip](https://github.com/user-attachments/files/19667178/oggenc-6b745c.zip)

The logs are a mess due to parallel builds, this is what I could recover from them:
```
clang: ../llvm/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13005: auto llvm::slpvectorizer::BoUpSLP::getEntryCost(const TreeEntry *, ArrayRef<Value *>, SmallPtrSetImpl<Value *> &)::(anonymous class)::operator()(InstructionCost) const: Assertion `IsVectorized && "Expected to be vectorized"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.  Program arguments: /home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang -DNDEBUG -mcpu=neoverse-512tvb -msve-vector-bits=256 -mllvm -treat-scalable-fixed-error-as-warning=false -O3 -fno-strict-aliasing -ffp-contract=off -DFMA_DISABLED=1 -ffp-contract=off -DFMA_DISABLED=1 -MD -MT MultiSource/Applications/oggenc/CMakeFiles/oggenc.dir/oggenc.c.o -MF CMakeFiles/oggenc.dir/oggenc.c.o.d -o CMakeFiles/oggenc.dir/oggenc.c.o -c /home/tcwg-buildbot/worker/clang-aarch64-sve-vls/test/test-suite/MultiSource/Applications/oggenc/oggenc.c
1.  <eof> parser at end of file
2.  Optimizer
gmake[2]: Entering directory '/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/test/sandbox/build'
3.  Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,chr,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-load-elim,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>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop-unroll<O3>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/test/test-suite/MultiSource/Applications/oggenc/oggenc.c"
4.  Running pass "slp-vectorizer" on function "vorbis_lpc_to_lsp"
<...>
 #0 0x0000c646782873b0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x81c73b0)
 #1 0x0000c646782852ac llvm::sys::RunSignalHandlers() (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x81c52ac)
 #2 0x0000c646781ecdb4 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x0000f1673ee848f8 (linux-vdso.so.1+0x8f8)
 #4 0x0000f1673e8cf1f0 __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x0000f1673e88a67c gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #6 0x0000f1673e877130 abort ./stdlib/abort.c:81:7
 #7 0x0000f1673e883fd4 __assert_fail_base ./assert/assert.c:91:7
 #8 0x0000f1673e88404c (/lib/aarch64-linux-gnu/libc.so.6+0x3404c)
 #9 0x0000c64679b47bd0 bool llvm::function_ref<bool (llvm::Value*)>::callback_fn<llvm::slpvectorizer::BoUpSLP::getEntryCost(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallPtrSetImpl<llvm::Value*>&)::$_16::operator()(llvm::InstructionCost) const::'lambda'(llvm::Value*)>(long, llvm::Value*) SLPVectorizer.cpp:0:0
10 0x0000c64679aac394 llvm::slpvectorizer::BoUpSLP::getEntryCost(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallPtrSetImpl<llvm::Value*>&)::$_2::operator()(llvm::function_ref<llvm::InstructionCost (unsigned int)>, llvm::function_ref<llvm::InstructionCost (llvm::InstructionCost)>) const SLPVectorizer.cpp:0:0
#11 0x0000c64679aa7e44 llvm::slpvectorizer::BoUpSLP::getEntryCost(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallPtrSetImpl<llvm::Value*>&) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x99e7e44)
#12 0x0000c64679ab1fc8 llvm::slpvectorizer::BoUpSLP::getTreeCost(llvm::ArrayRef<llvm::Value*>, llvm::InstructionCost) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x99f1fc8)
#13 0x0000c64679ae5728 llvm::SLPVectorizerPass::tryToVectorizeList(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, bool) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x9a25728)
#14 0x0000c64679ae64f0 llvm::SLPVectorizerPass::tryToVectorize(llvm::Instruction*, llvm::slpvectorizer::BoUpSLP&) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x9a264f0)
#15 0x0000c64679ae9060 llvm::SLPVectorizerPass::vectorizeRootInstruction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x9a29060)
#16 0x0000c64679adf0c0 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x9a1f0c0)
#17 0x0000c64679adc77c llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x9a1c77c)
#18 0x0000c64679adbcf0 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x9a1bcf0)
#19 0x0000c64677cb68d0 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x7bf68d0)
#20 0x0000c64677cba6b8 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x7bfa6b8)
#21 0x0000c64677cb5a10 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x7bf5a10)
#22 0x0000c646789a6c8c (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#23 0x0000c6467899dc4c clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x88ddc4c)
#24 0x0000c646789b0d58 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x88f0d58)
#25 0x0000c6467a1df8cc clang::ParseAST(clang::Sema&, bool, bool) (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0xa11f8cc)
#26 0x0000c64678ed16b0 clang::FrontendAction::Execute() (/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1.install/bin/clang+0x8e116b0)
<...>
```

https://github.com/llvm/llvm-project/pull/132099


More information about the llvm-commits mailing list