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

    <tr>
        <th>Summary</th>
        <td>
            [SLPVectorizer] Crash: Invalid shuffle vector instruction operands!
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ashermancinelli
      </td>
    </tr>
</table>

<pre>
    ```
clang -O3 reduced.ll
clang-21: llvm::ShuffleVectorInst::ShuffleVectorInst(llvm::Value*, llvm::Value*, llvm::ArrayRef<int>, const llvm::Twine&, llvm::InsertPosition):
 Assertion `isValidOperands(V1, V2, Mask) && "Invalid shuffle vector instruction operands!"' failed.
PLEASE submit a bug report to https: and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments:  -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -dumpdir a- -disable-free -clear-ast-before-backend -main-file-name reduced.ll -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir= -fcoverage-compilation-dir= -resource-dir  -O3 -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -vectorize-loops -vectorize-slp -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o  -x ir reduced.ll
1.      Optimizer
2. 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 "reduced.ll"
3.      Running pass "slp-vectorizer" on function "foo"
 #0 0x00005602ae2be83b llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (
 #1 0x00005602ae2bc054 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #2 0x00007f6eeda3e730 __restore_rt (
 #3 0x00007f6eeda8ba6c __pthread_kill_implementation (
 #4 0x00007f6eeda3e686 gsignal (
 #5 0x00007f6eeda28833 abort (
 #6 0x00007f6eeda2875b _nl_load_domain.cold (
 #7 0x00007f6eeda373c6 (
 #8 0x00005602adc2befe llvm::ShuffleVectorInst::ShuffleVectorInst(llvm::Value*, llvm::Value*, llvm::ArrayRef<int>, llvm::Twine const&, llvm::InsertPosition) (
 #9 0x00005602acef4b64 llvm::IRBuilderBase::CreateShuffleVector(llvm::Value*, llvm::Value*, llvm::ArrayRef<int>, llvm::Twine const&) X86InstCombineIntrinsic.cpp:0:0
#10 0x00005602b018eef2 (anonymous namespace)::HorizontalReduction::emitReduction(llvm::IRBuilderBase&, llvm::TargetTransformInfo const&, llvm::Type*)::'lambda0'(llvm::Value*, unsigned int, bool)::operator()(llvm::Value*, unsigned int, bool) const SLPVectorizer.cpp:0:0
#11 0x00005602b02041ba (anonymous namespace)::HorizontalReduction::tryToReduce(llvm::slpvectorizer::BoUpSLP&, llvm::DataLayout const&, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo const&, llvm::AssumptionCache*) SLPVectorizer.cpp:0:0
#12 0x00005602b0207130 llvm::SLPVectorizerPass::vectorizeHorReduction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::SmallVectorImpl<llvm::WeakTrackingVH>&) (
#13 0x00005602b020b7db llvm::SLPVectorizerPass::vectorizeRootInstruction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (.constprop.0) SLPVectorizer.cpp:0:0
#14 0x00005602b0210459 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (
#15 0x00005602b0216b86 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (.part.0) SLPVectorizer.cpp:0:0
#16 0x00005602b02176db llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (
#17 0x00005602afbfa822 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilder.cpp:0:0
#18 0x00005602adcc7b59 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (
#19 0x00005602acbb1f82 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) NVPTXTargetMachine.cpp:0:0
#20 0x00005602adcc63c2 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (
#21 0x00005602acbb1ee2 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) NVPTXTargetMachine.cpp:0:0
#22 0x00005602adcc5de1 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (
#23 0x00005602aed49df9 (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 0x00005602aed4d963 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*) (
#25 0x00005602aeebc237 clang::CodeGenAction::ExecuteAction() (
#26 0x00005602af2caea5 clang::FrontendAction::Execute() (
#27 0x00005602af24ac0e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (
#28 0x00005602af3d1d6e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (
#29 0x00005602acb64337 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (
#30 0x00005602acb5b7da ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#31 0x00005602acb5f80a clang_main(int, char**, llvm::ToolContext const&) (
#32 0x00005602acb737b7 main (
#33 0x00007f6eeda295d0 __libc_start_call_main (
#34 0x00007f6eeda29680 __libc_start_main@GLIBC_2.2.5 (
#35 0x00005602acb5b26e _start (
clang: error: unable to execute command: Aborted (core dumped)
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 21.0.0git (https: 083f099a345f02390d00a8196d4ffa36ae71c82f)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: 
Build config: +assertions
```
```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define void @foo(ptr %0, ptr %1, ptr %2) {
  br label %4

4:                                                ; preds = %7, %3
  %5 = phi i32 [ 0, %3 ], [ %9, %7 ]
  %6 = phi i1 [ true, %3 ], [ false, %7 ]
  br i1 %6, label %7, label %19

7: ; preds = %12, %4
  %8 = phi i64 [ %17, %12 ], [ 0, %4 ]
  %9 = phi i32 [ %16, %12 ], [ 0, %4 ]
  %10 = phi i64 [ %18, %12 ], [ 9, %4 ]
  %11 = icmp sgt i64 %10, 0
  br i1 %11, label %12, label %4

12:                                               ; preds = %7
  %13 = getelementptr i32, ptr %1, i64 %8
  %14 = load i32, ptr %13, align 4
 %.not = icmp ne i32 %14, 0
  %15 = zext i1 %.not to i32
  %16 = add i32 %9, %15
  %17 = add i64 %8, 1
  %18 = add i64 %10, -1
  br label %7

19: ; preds = %33, %4
  %20 = phi i64 [ %34, %33 ], [ 0, %4 ]
  %21 = phi i32 [ %25, %33 ], [ 0, %4 ]
  %22 = phi i64 [ %35, %33 ], [ 4, %4 ]
  %23 = icmp sgt i64 %22, 0
  br i1 %23, label %24, label %36

24:                                               ; preds = %27, %19
  %25 = phi i32 [ %32, %27 ], [ 0, %19 ]
  %26 = phi i1 [ false, %27 ], [ true, %19 ]
  br i1 %26, label %27, label %33

27: ; preds = %24
  %28 = getelementptr i8, ptr %2, i64 %20
  %29 = load i32, ptr %28, align 4
  %30 = icmp eq i32 %29, 0
 %31 = zext i1 %30 to i32
  %32 = add i32 %21, %31
  br label %24

33: ; preds = %24
  %34 = add i64 %20, 1
  %35 = add i64 %22, -1
  br label %19

36: ; preds = %19
  %37 = sub i32 %21, %5
  store i32 %37, ptr %0, align 4
  ret void
}
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMWlFzozjy_zTkRSUXSIDxQx4cZ7KTqpn_ppLc3L25BDS2NkLiJJFM9tP_SwJswM5Msrt3e6lMBoTU6v71r5uWEDOG7yTAZZBcBcn1BWvtXulLZvagayYLLkEIfpGr8vUySMP-N1wXgskdwr9SpKFsCygXQgzNmEQBXSMhnuuArgO6fti3VSXgGxRW6Vtp7FvNJDsO-sZECwFZB2SDfta61pq93kMV0A2XNqCf3ONCSWNHnR5fuISApNOht9KAtnfKcMuVDMjKNYdrtDaunSuJgjTk5hsTvPy1Ac1kaQKSfYucmG_E_f3KzFNAVsjLTlFAyK18dv2R6SxEz95ExKWxui28VHWQFQWEBGSJKsYFlIsgXN99-bR--IRMm9fcIobydoc0NEpbZBXaW9sYBzCTJeKyEG0JyO4BFZqZPcpZ8WQ1K8Cp1mhotCrAGCiRUa3umt1IZowqOLNQIt1KZArNG-tmf7CseEJlWzcdFOEC-Z87rXaa1YjpXVuDtF4HhIsiQthq3ghA37N0m8a4lU9SvUgsuGy_451sEYaaW6zy3xB2gkuuEcMIl9ywXACuNADChQCmMTMW51ApDdiZArJEuGZc4ooLwJLVMKIcwrUGoQrmMMW1KkGghhcIN7zAAp5BINLdcIMbDgjXlWY14EZxaUEH9FoqCQhXNbN7DFpLhXBVNbhQ0qFoA3qtJMKVVFirVpZc7rDri3DtCeb8qTRmgjMDBuGqlS9cltg6w0xArwnClukdWFw0rUMIpzHCtpXgG3YgQTuNS8jb3Q60e8TlLqDXuzJHuPLtuFB1w0VnZsmd3ghXhXoGzXZw9qmGzt-uAflIxRVorTQW3NEqWiFc7WRb4GfQxnGfXscLsogQrswTb7AqNS72UDxhLvGurhDuaMx_ByyUasy4wYgG4YqVpTZ8h_D1dvvLZrP9vP72aXv9z_X9Ddlubm6364evAb2OEFYI4e-I62n2iHqm_dpYXvPfQQfhmizQfSsdIqhhxrjoqlrpYyigG2AOMS6ffcxnlVDMEpcCyEaoF9DY-4hJi7m0mkvDCxOQTbHXvodqXMpRqsFaWWYhoJs9sBI0LttG8I5WAb2SCrtIYhpw5QC0qssxfmgJAobcMTRxYzXPW-uijcvfoLDYCo5r1jRc7szQ74BfQDdSYU9JAezZT1NAiZUUr938R6injzpFuKzAk3AnXWgO8oViJQbBa9_F2ELVuUuCdFOz75hb0N5CR9NomEbz6hVX_LuPkE664XUjePVaVLuAbnIlW4OdOGz3GsxeibIXUCn9wnSJzQu3xd6BXwb0qr_TTO4AW4V54VLL0GyVY9NT23QKPAE0Hb0CerVX3FjH7lpJP6PpOnXtzjqDjVUaDH7htpsQV6wV1kfQleHyaT7cNFC0glnAuVDFk2_q7evG55rJYt9NdOzcykZDyYshrj0uYuRCx6juBg8w_ynQvQNbqZUQAd38SrtWq5k0ldI1fmHa5wmyMVqxgG4aDQb0M2DvpvOs-LP61MYwFzK8qAO6YUKolwEiHymfuiA4TIkrrWrMjGnrppukF-Q80-szoB-QTcmfsYYaN4xr19UyLgomRE_hd_NQKvwhKjpPn7JxQsUD62Z0ei8V3RR_io0_pOIqIAQpiWpVtgJckhwlVkKCcE373DpPpnMOezFDhvXZVqlOAgoIDVH4PQzDMElDwoDkkNF8VEyZV9Nd3GkurS8kHrtSZFTYafayVcZqYHVfjfmE7eqnrJ8mmk1ThEmMHvhOMvGZyVI4RbMuzSPDd1xWamv7qvBZ8dJfrvoRZlE0rpQJ_b9uAtJPsKxSgJJRWNIQbbcavAu32o6UodO-Wc7SAm23jSMdK7dPXIitcxk4wrMetmFwPJ8ozVK0M16xUbdk2o1kGaWI5WqiSDrvtExytJVi69i3LZWrkhaFEuVozHI2_5IW6ehxNga6LEgOFfzthfusZO8K-Z8X7iOzVmOzCqjiPI3HQ--vWi5K0FfMQNe00cAsTAz7bxm1Qv_KUofipkvMt0OlMuOti4tx_OVhlAFUxNnNpJKvtWoNcgWyaXzMrbr5PrvQVtIyce9yQpeo3QNXkx-bxtZOAZoj_-jL2cfhTXQrK_WGjx5fmw6eXpWALAWr85KFAVm-iW8r_Zq0RH2E50qJgwi_buq849Pex2T0i8KHL3ffDjnvDMzRBGYSxlHO_jDMVr8-Kt82zYNGNKPE65uu1D-ahy93JzheM8u-sFfV2reAPnXJCS27Pl94rpl-_YHT1oe39YYVexhy6U8gIzPIlhENx5lkPPyOmf49cQDgs9LnqXj3-fb_VHkaZLfHtfTJsytmeHHl3qcnjz4A-kPNhOhzXN24Iuz47J_A_Jvticvdt88-xNNjCnJ40Bke-bLMP4DHvVJ2YuLfBok3auGp0mjVLML3sCGeWh-FcbL6gPWbPePS3Mpe4ewvs6NXL5mpl-ZZ-nP1dCs9Ecb63Axr0RP2FEww_elZifasQ_5QxJ6-atb3YFphzcmTL0o1Z4dcq5pLl0EfNZx5d50J_sloqJksobziZ-bs1-2-BrqHmumnTzW31lVr64FIDdP2fRxKZ05apu-JIN3K9zloLZl4Ndx8ZZLtHGE2ZwadCezluLao8oplhIzEluAWLX2gMmO-qhLEeeFTvpyY84e0db__QRicYn1pcMZjs2qyWOaTqPdw_Gia_0WLj46fFpV5HlXZX-H4_xgq_4to_t-3u8d_dWntKyv2XMIpjUg4o1FKizHQX_0a91EN0h2A65I1rig8q3s34EOa90NOWUCiOQsAPsaCQZvNO036Azq_5cS_AIh3OZDMHJiUEL2D8eeQ-dsNPnqeTjYlynhVVqufLQrc-29tDNS5eP0MohkKk_tWjl-Wd7wB4XcMM_8Fbah1_OeP9SENGFt2T1rJ_93CtrFT3TV72TYvmlvYDvsro0El-O2ord-vhp8M7FNI-p5pH5USv7a2ae0N7_z3njlno8YTnmKwUdK09aGQ6Fv_Ybk4Q7945qhyldKxTLfu7SV0Ckxh3_iPKeA3Npgs4FSpjSrhF_Ae9Fua89LPrd9391CdC_K-aPqRm8cVvdWt4c9wD9VG2rsZ8M9VX_Q4BB9ejYW6T_z_faa8w2vHUEomHoK8IHR5BuD1aBX96TsUrYUBpWwqMJ0UZaRgwJKxwButpD2CPJZ4Imta4JGYFSGgH_HjrH5vTz7PK5OqqaJlVKaT-XrJx2mf---dP6PtDPRZ_ZLG1IFeRNua8WnaHG1gFXumh32C9eDoSdt0y_Uw3XSruMiTfFkyNNiyiR79hkz2o-X26dzzXQ-lxMZh-91O9tNKzZ_PFah09vJOqixkHdQDCP12kZvaWzRfkb0x49FsMp1iSZf5Ejnhoz6zHWWySsoQbbeC58XWWKbttmBCbGej4vmoNJuN8jbE4S9fbq82W7Igi2Q0PJn7g6SAuoF9r4FMyH8mdhetZLkAZBWCznGoULVbALqH61xpC36zuVAa_IkBKN2r75yo7sBI1YfCIKc_9IDK1s9y3BdvDSD87NsAEB9x_iAe9d-tEYkW4SLccW_H4XREmNEqXK0YjZMqJHQVlmHIsmiVlnFVMZoyWEZFRqpOYlfSuHFvnWFwnfyOP6q7mm6NGmX49yD0Gy9MCCivubc1CNd-keQoUnGPQ0Cu2HCixDiPjM7SjK-7owKoZJaJbsMvoNcoIASwoyDghiwdoynxf9xtNL11V2ns_2B-uIhIFtB1RDJcZWF_JX1TOgxPY_zguvmPPb0e_bmOXoc3ofFDgtC9OLgEnw9QEIf-01HWWI0CkoT-PEp3HY2uiY-f5VUQrhHKNRIsB0eBJO5kxv6Yycd-AnqFGg2l6TVPlm7CgCTUzxKQJPFPmj1HnBIUJFcoHLqgILn218mVu1_17Uvf3g9Pj8Mj39HqFs4JqJgwcCIh134cSbqENli8nNxFqw6ApefP3KKI9FLjQafsqFMaD9pHg-URGas1GBuPjVqdYOLGpe8XEIVnVcjOSlidlRB5CbyoG2R2thPjBLvO4RS7KJrCRSa3PXsi8nH6nGHPoB71TTuw0H3ucxzmlMyp3audHcbFfpxQrJx3p_48luA7ieLu61WykMoeYZDQucNJOaLgbjsO_-7eRR0ifqBVfoqhU8dUVpaDlAH3KDn0WR77DIqTDYoOz7P5884fODqJ2WWP-uosZymdc5acZQyNh1CiP-Ucic6xliQfkEDO6nBeQnxWAj3LWkLOsJbQCU1JPLmlaQcg-QNZ7wRucoj91UHT07znZh1yCVmeQytaTYw9yX3jHDeVMMqKIyFHLKbpj0zzH6U9FucTIDmSKDsXldn0HXMISnIIILJ6KypJNotKr0949DL8ewgnf94F9ecKEhrNY5KGs4ikZB6RJBqodhpQpM9jlP4EBBrPg5SEkyimyUkH8kYUD28emp5_9RzoRLvMYdr8xJYuu_jjFMMzuhxBHM4R1mC7hUS4DpbX47Looryk5Yqu2AVcRku6SuIsW64u9pdxuoxTIMkqYrTMozxPYlokq4SmeQ7FKrzglyQkSUiiOErDKFotaEJIWpY5ybPlKk6XQRxCzbhYuBJ_ofTughvTwmVEloSEFx4R489GEyLhBfmnrtxJri_0pRuE83ZngjgU3FhzFGO5Ff5Q9WRfP0iu0UYzs3e4fuyQ8EWrxeVQ3AbkJiA3O273bb4oVB2QG79G6f7DjVa_QWEDcuP1NQG56Q16viT_HwAA__-94ct5">