[llvm] [SLP]Reduce number of alternate instruction, where possible (PR #123360)
Alex Bradbury via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 31 06:07:24 PST 2025
asb wrote:
@alexey-bataev this appears to have caused a failure for the rva23 evl builder: https://lab.llvm.org/staging/#/builders/16/builds/717/steps/11/logs/stdio
```
[140/7284] Building C object lib/Support/BLAKE3/CMakeFiles/LLVMSupportBlake3.dir/blake3_portable.c.o
FAILED: lib/Support/BLAKE3/CMakeFiles/LLVMSupportBlake3.dir/blake3_portable.c.o
/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang --target=riscv64-linux-gnu --sysroot=/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/../rvsysroot -DBLAKE3_NO_AVX2 -DBLAKE3_NO_AVX512 -DBLAKE3_NO_SSE2 -DBLAKE3_NO_SSE41 -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage2/lib/Support/BLAKE3 -I/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/llvm/llvm/lib/Support/BLAKE3 -I/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage2/include -I/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/llvm/llvm/include -march=rva23u64 -mllvm -force-tail-folding-style=data-with-evl -mllvm -prefer-predicate-over-epilogue=predicate-else-scalar-epilogue -fPIC -fno-semantic-interposition -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-comment -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -UNDEBUG -MD -MT lib/Support/BLAKE3/CMakeFiles/LLVMSupportBlake3.dir/blake3_portable.c.o -MF lib/Support/BLAKE3/CMakeFiles/LLVMSupportBlake3.dir/blake3_portable.c.o.d -o lib/Support/BLAKE3/CMakeFiles/LLVMSupportBlake3.dir/blake3_portable.c.o -c /home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/llvm/llvm/lib/Support/BLAKE3/blake3_portable.c
clang: /home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/llvm/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:6039: void llvm::slpvectorizer::BoUpSLP::TreeEntry::reorderSplitNode(unsigned int, ArrayRef<int>, ArrayRef<int>): Assertion `Idx == 1 && "Expected either 0 or 1 index."' 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/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang --target=riscv64-linux-gnu --sysroot=/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/../rvsysroot -DBLAKE3_NO_AVX2 -DBLAKE3_NO_AVX512 -DBLAKE3_NO_SSE2 -DBLAKE3_NO_SSE41 -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage2/lib/Support/BLAKE3 -I/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/llvm/llvm/lib/Support/BLAKE3 -I/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage2/include -I/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/llvm/llvm/include -march=rva23u64 -mllvm -force-tail-folding-style=data-with-evl -mllvm -prefer-predicate-over-epilogue=predicate-else-scalar-epilogue -fPIC -fno-semantic-interposition -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-comment -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -UNDEBUG -MD -MT lib/Support/BLAKE3/CMakeFiles/LLVMSupportBlake3.dir/blake3_portable.c.o -MF lib/Support/BLAKE3/CMakeFiles/LLVMSupportBlake3.dir/blake3_portable.c.o.d -o lib/Support/BLAKE3/CMakeFiles/LLVMSupportBlake3.dir/blake3_portable.c.o -c /home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/llvm/llvm/lib/Support/BLAKE3/blake3_portable.c
1. <eof> parser at end of file
2. Optimizer
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/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/llvm/llvm/lib/Support/BLAKE3/blake3_portable.c"
4. Running pass "slp-vectorizer" on function "llvm_blake3_compress_in_place_portable"
#0 0x00005aa8c3d78836 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x439d836)
#1 0x00005aa8c3d7614e llvm::sys::RunSignalHandlers() (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x439b14e)
#2 0x00005aa8c3ce0b2d CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x0000780e6a24c1d0 (/usr/lib/libc.so.6+0x3d1d0)
#4 0x0000780e6a2a5334 (/usr/lib/libc.so.6+0x96334)
#5 0x0000780e6a24c120 raise (/usr/lib/libc.so.6+0x3d120)
#6 0x0000780e6a2334c3 abort (/usr/lib/libc.so.6+0x244c3)
#7 0x0000780e6a2333df (/usr/lib/libc.so.6+0x243df)
#8 0x0000780e6a244177 (/usr/lib/libc.so.6+0x35177)
#9 0x00005aa8c5994756 llvm::slpvectorizer::BoUpSLP::TreeEntry::reorderSplitNode(unsigned int, llvm::ArrayRef<int>, llvm::ArrayRef<int>) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x5fb9756)
#10 0x00005aa8c59998c0 llvm::slpvectorizer::BoUpSLP::reorderBottomToTop(bool) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x5fbe8c0)
#11 0x00005aa8c59fcf0a llvm::SLPVectorizerPass::vectorizeStoreChain(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, unsigned int, unsigned int, unsigned int&) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x6021f0a)
#12 0x00005aa8c59ff742 llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&, llvm::DenseSet<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, llvm::DenseMapInfo<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, void>>&)::$_0::operator()(std::set<std::pair<unsigned int, int>, llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&, llvm::DenseSet<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, llvm::DenseMapInfo<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, void>>&)::StoreDistCompare, std::allocator<std::pair<unsigned int, int>>> const&) const SLPVectorizer.cpp:0:0
#13 0x00005aa8c59fe37b llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&, llvm::DenseSet<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, llvm::DenseMapInfo<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, void>>&) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x602337b)
#14 0x00005aa8c59f90d9 llvm::SLPVectorizerPass::vectorizeStoreChains(llvm::slpvectorizer::BoUpSLP&) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x601e0d9)
#15 0x00005aa8c59f78ec llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x601c8ec)
#16 0x00005aa8c59f6e76 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x601be76)
#17 0x00005aa8c543f13d llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilder.cpp:0:0
#18 0x00005aa8c386ff5a llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x3e94f5a)
#19 0x00005aa8c4635c1d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) BackendUtil.cpp:0:0
#20 0x00005aa8c387461f llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x3e9961f)
#21 0x00005aa8c4630d7d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) BackendUtil.cpp:0:0
#22 0x00005aa8c386ef6a llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x3e93f6a)
#23 0x00005aa8c462df8d (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
#24 0x00005aa8c4624075 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/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x4c49075)
#25 0x00005aa8c464ef47 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x4c73f47)
#26 0x00005aa8c60eda79 clang::ParseAST(clang::Sema&, bool, bool) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x6712a79)
#27 0x00005aa8c4b1db44 clang::FrontendAction::Execute() (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x5142b44)
#28 0x00005aa8c4a85d6d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x50aad6d)
#29 0x00005aa8c4c0f1cd clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x52341cd)
#30 0x00005aa8c2c04a8e cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x3229a8e)
#31 0x00005aa8c2c00a19 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#32 0x00005aa8c48f2999 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_0>(long) Job.cpp:0:0
#33 0x00005aa8c3ce082e llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x430582e)
#34 0x00005aa8c48f1ff4 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x4f16ff4)
#35 0x00005aa8c48b1958 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x4ed6958)
#36 0x00005aa8c48b1b97 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x4ed6b97)
#37 0x00005aa8c48ced89 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x4ef3d89)
#38 0x00005aa8c2c00266 clang_main(int, char**, llvm::ToolContext const&) (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x3225266)
#39 0x00005aa8c2c102d6 main (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x32352d6)
#40 0x0000780e6a234e08 (/usr/lib/libc.so.6+0x25e08)
#41 0x0000780e6a234ecc __libc_start_main (/usr/lib/libc.so.6+0x25ecc)
#42 0x00005aa8c2bfe4e5 _start (/home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin/clang+0x32234e5)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 21.0.0git (https://github.com/llvm/llvm-project.git c1163b843b63f775817b84f124cdcf33f25c28f6)
Target: riscv64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/buildbot-worker/bbroot/clang-riscv-rva23-evl-vec-2stage/stage1.install/bin
Build config: +assertions
clang: note: diagnostic msg:
********************
```
https://github.com/llvm/llvm-project/pull/123360
More information about the llvm-commits
mailing list