[PATCH] D107966: [SLP]Do not emit extract elements for insertelements users, replace with shuffles directly.

Alexey Bataev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 30 14:15:41 PDT 2022


ABataev added a comment.

In D107966#3620735 <https://reviews.llvm.org/D107966#3620735>, @vdmitrie wrote:

> F23626866: reduced.ll <https://reviews.llvm.org/F23626866>
>
> F23626884: patch.txt <https://reviews.llvm.org/F23626884>
>
> There is another issue which I tracked down to this patch but it is kind of hidden. In order to reveal the issue please apply attached patch ( that is basically enabling expensive checks and added verifyFunction right after vectorized code generated.
>
> Crash looks like this:
> Instruction does not dominate all uses!
>
>   %41 = insertelement <4 x i32> %40, i32 %32, i32 1
>   %39 = insertelement <4 x i32> %41, i32 poison, i32 2
>
> opt: /path/llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:8404: llvm::Value* llvm::slpvectorizer::BoUpSLP::vectorizeTree(): Assertion `!verifyFunction(*F, &dbgs()) && "Broken after vec"' failed.
> PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
> Stack dump:
> 0.      Program arguments: bin/opt -slp-vectorizer -mcpu=skylake -disable-output reduced.ll

Investigated. This is not quite a bug, but some junk is left that requires cleanup. I'll add the code to do this extra cleanup to avoid any problems, plus, I believe it may improve compile time in some cases.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D107966/new/

https://reviews.llvm.org/D107966



More information about the llvm-commits mailing list