[llvm] [SLP]Support reduced or selects of bitmask as cmp bitcast (PR #181940)
Alexey Bataev via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 19 11:20:24 PST 2026
alexey-bataev wrote:
> @alexey-bataev This commit seems to trigger an assertion when compiling the [Four in a row](https://github.com/llvm/llvm-test-suite/tree/main/MultiSource/Benchmarks/FreeBench/fourinarow) multisource test: https://ci.swift.org/job/llvm.org/job/test-suite-verify-machineinstrs-x86_64h-O3/job/main/44/
>
> ```
> [2026-02-19T05:16:15.064Z] /Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/test-suite-build/tools/timeit --summary MultiSource/Benchmarks/FreeBench/fourinarow/CMakeFiles/fourinarow.dir/fourinarow.c.o.time /Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang -DNDEBUG -B /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin -Wno-unused-command-line-argument -mllvm -verify-machineinstrs -O3 -arch x86_64h -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk -w -Werror=date-time -DVERSION=\"1.00\" -DCOMPDATE=\"today\" -DCFLAGS=\"\" -DHOSTNAME=\"thishost\" -MD -MT MultiSource/Benchmarks/FreeBench/fourinarow/CMakeFiles/fourinarow.dir/fourinarow.c.o -MF MultiSource/Benchmarks/FreeBench/fourinarow/CMakeFiles/fourinarow.dir/fourinarow.c.o.d -o MultiSource/Benchmarks/FreeBench/fourinarow/CMakeFiles/fourinarow.dir/fourinarow.c.o -c /Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/test-suite/MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow.c
> [2026-02-19T05:16:15.064Z] Assertion failed: (OpTy == RHS->getType() && "Expected LHS and RHS of same type"), function createOp, file SLPVectorizer.cpp, line 25355.
> [2026-02-19T05:16:15.064Z] PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
> [2026-02-19T05:16:15.064Z] Stack dump:
> [2026-02-19T05:16:15.064Z] 0. Program arguments: /Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang -DNDEBUG -B /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin -Wno-unused-command-line-argument -mllvm -verify-machineinstrs -O3 -arch x86_64h -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk -w -Werror=date-time -DVERSION=\"1.00\" -DCOMPDATE=\"today\" -DCFLAGS=\"\" -DHOSTNAME=\"thishost\" -MD -MT MultiSource/Benchmarks/FreeBench/fourinarow/CMakeFiles/fourinarow.dir/fourinarow.c.o -MF MultiSource/Benchmarks/FreeBench/fourinarow/CMakeFiles/fourinarow.dir/fourinarow.c.o.d -o MultiSource/Benchmarks/FreeBench/fourinarow/CMakeFiles/fourinarow.dir/fourinarow.c.o -c /Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/test-suite/MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow.c
> [2026-02-19T05:16:15.064Z] 1. <eof> parser at end of file
> [2026-02-19T05:16:15.064Z] 2. Optimizer
> [2026-02-19T05:16:15.064Z] 3. Running pass "function<eager-inv>(drop-unnecessary-assumes,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;>,drop-unnecessary-assumes,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-arithmetic;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;switch-to-arithmetic;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 "/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/test-suite/MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow.c"
> [2026-02-19T05:16:15.064Z] 4. Running pass "slp-vectorizer" on function "find_winner_p"
> [2026-02-19T05:16:15.064Z] #0 0x0000000113d3f798 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1063d6798)
> [2026-02-19T05:16:15.064Z] #1 0x0000000113d3d373 llvm::sys::RunSignalHandlers() (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1063d4373)
> [2026-02-19T05:16:15.064Z] #2 0x0000000113d3ecf1 llvm::sys::CleanupOnSignal(unsigned long) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1063d5cf1)
> [2026-02-19T05:16:15.064Z] #3 0x0000000113c8116e CrashRecoverySignalHandler(int) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x10631816e)
> [2026-02-19T05:16:15.064Z] #4 0x00007ff80668ee9d (/usr/lib/system/libsystem_platform.dylib+0x7ff80047fe9d)
> [2026-02-19T05:16:15.064Z] #5 0x00000001134ea436 llvm::ScalarEvolution::forgetValue(llvm::Value*) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x105b81436)
> [2026-02-19T05:16:15.064Z] #6 0x00007ff80657ab19 (/usr/lib/system/libsystem_c.dylib+0x7ff80036bb19)
> [2026-02-19T05:16:15.064Z] #7 0x00007ff806579ddc (/usr/lib/system/libsystem_c.dylib+0x7ff80036addc)
> [2026-02-19T05:16:15.064Z] #8 0x0000000114cd68a3 (anonymous namespace)::HorizontalReduction::createOp(llvm::IRBuilderBase&, llvm::RecurKind, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::SmallVector<llvm::SmallVector<llvm::Value*, 16u>, 2u> const&) (.cold.7) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x10736d8a3)
> [2026-02-19T05:16:15.064Z] #9 0x0000000110c83a6d (anonymous namespace)::HorizontalReduction::createOp(llvm::IRBuilderBase&, llvm::RecurKind, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::SmallVector<llvm::SmallVector<llvm::Value*, 16u>, 2u> const&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x10331aa6d)
> [2026-02-19T05:16:15.064Z] #10 0x0000000110c7a65f (anonymous namespace)::HorizontalReduction::tryToReduce(llvm::slpvectorizer::BoUpSLP&, llvm::DataLayout const&, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo const&, llvm::AssumptionCache*, llvm::DominatorTree&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x10331165f)
> [2026-02-19T05:16:15.064Z] #11 0x0000000110c43f31 llvm::SLPVectorizerPass::vectorizeHorReduction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::SmallVectorImpl<llvm::WeakTrackingVH>&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1032daf31)
> [2026-02-19T05:16:15.064Z] #12 0x0000000110c453a4 llvm::SLPVectorizerPass::vectorizeRootInstruction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1032dc3a4)
> [2026-02-19T05:16:15.064Z] #13 0x0000000110c87a27 bool llvm::SLPVectorizerPass::vectorizeCmpInsts<std::__1::reverse_iterator<llvm::CmpInst* const*>>(llvm::iterator_range<std::__1::reverse_iterator<llvm::CmpInst* const*>>, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x10331ea27)
> [2026-02-19T05:16:15.064Z] #14 0x0000000110c472cd llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&)::$_4::operator()(bool) const (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1032de2cd)
> [2026-02-19T05:16:15.064Z] #15 0x0000000110c3c1e7 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1032d31e7)
> [2026-02-19T05:16:15.064Z] #16 0x0000000110c39902 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1032d0902)
> [2026-02-19T05:16:15.064Z] #17 0x0000000110c38f78 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1032cff78)
> [2026-02-19T05:16:15.064Z] #18 0x000000010fd70002 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x102407002)
> [2026-02-19T05:16:15.064Z] #19 0x0000000113b65ebb llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1061fcebb)
> [2026-02-19T05:16:15.064Z] #20 0x000000010dfa1992 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x100638992)
> [2026-02-19T05:16:15.064Z] #21 0x0000000113b69c71 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x106200c71)
> [2026-02-19T05:16:15.064Z] #22 0x000000010dfa25f2 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1006395f2)
> [2026-02-19T05:16:15.064Z] #23 0x0000000113b64fbb llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1061fbfbb)
> [2026-02-19T05:16:15.064Z] #24 0x000000010f750cd4 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>&, std::__1::unique_ptr<llvm::ToolOutputFile, std::__1::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x101de7cd4)
> [2026-02-19T05:16:15.065Z] #25 0x000000010f74861a clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x101ddf61a)
> [2026-02-19T05:16:15.065Z] #26 0x000000010fa70748 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x102107748)
> [2026-02-19T05:16:15.065Z] #27 0x00000001115a71d9 clang::ParseAST(clang::Sema&, bool, bool) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x103c3e1d9)
> [2026-02-19T05:16:15.065Z] #28 0x000000011150600a clang::FrontendAction::Execute() (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x103b9d00a)
> [2026-02-19T05:16:15.065Z] #29 0x0000000111486e5d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x103b1de5d)
> [2026-02-19T05:16:15.065Z] #30 0x000000010f3cd680 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x101a64680)
> [2026-02-19T05:16:15.065Z] #31 0x000000010d96f7c4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1000067c4)
> [2026-02-19T05:16:15.065Z] #32 0x000000010d96ca61 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x100003a61)
> [2026-02-19T05:16:15.065Z] #33 0x000000010d96e6a1 int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::$_0>(long, llvm::SmallVectorImpl<char const*>&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1000056a1)
> [2026-02-19T05:16:15.065Z] #34 0x00000001112aa4fe void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0>(long) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1039414fe)
> [2026-02-19T05:16:15.065Z] #35 0x0000000113c80e92 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x106317e92)
> [2026-02-19T05:16:15.065Z] #36 0x00000001112a9dd9 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x103940dd9)
> [2026-02-19T05:16:15.065Z] #37 0x000000011126e7ac clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1039057ac)
> [2026-02-19T05:16:15.065Z] #38 0x000000011126e9af clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&, bool) const (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1039059af)
> [2026-02-19T05:16:15.065Z] #39 0x000000011128d0b0 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x1039240b0)
> [2026-02-19T05:16:15.065Z] #40 0x000000010d96c296 clang_main(int, char**, llvm::ToolContext const&) (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x100003296)
> [2026-02-19T05:16:15.065Z] #41 0x000000010d979966 main (/Users/ec2-user/jenkins/workspace/fy-machineinstrs-x86_64h-O3_main/compiler/bin/clang-23+0x100010966)
> ```
Hmm, unable to reproduce, do you have a preprocessed source code?
https://github.com/llvm/llvm-project/pull/181940
More information about the llvm-commits
mailing list