[llvm-dev] SLP Vectorizer bug in trunk

Anton Afanasyev via llvm-dev llvm-dev at lists.llvm.org
Tue Aug 31 02:53:13 PDT 2021


Hi Neil,
it looks like this bug was introduced by this commit:
https://reviews.llvm.org/rGa36bc873a269dca0c5399d72bfdd42d3ddc72671
I'm to report this and revert it if no fix in short time.
  Thanks,
    Anton

вт, 31 авг. 2021 г. в 11:20, Neil Henning via llvm-dev <
llvm-dev at lists.llvm.org>:

> Hey list,
>
> I don't have bugzilla (reasons - incidentally is there anyone working on a
> more sane way to report bugs yet?).
>
> Between LLVM 13 rc2 and trunk I've got some new fun fail in the SLP
> vectorizer. I'll attach the repro below (I could repro it with opt
> --slp-vectorizer test.ll) - fails with:
>
> Assertion failed: !isa<PHINode>(I) && !isVectorLikeInstWithConstOps(I) &&
> "phi nodes/insertelements/extractelements/extractvalues don't need to " "be
> scheduled", file ..\lib\Transforms\Vectorize\SLPVectorizer.cpp, line 6096
>
> Anyone know what has changed in the short time from 13 -> trunk that'd
> cause this?
>
> define void @test([4 x float]* nocapture %o, [2 x float]* nocapture
> nonnull readonly dereferenceable(8) %a, [2 x float]* nocapture nonnull
> readonly dereferenceable(8) %b, i32 signext %component) {
> entry:
>   %0 = bitcast [2 x float]* %a to <2 x float>*
>   %1 = load <2 x float>, <2 x float>* %0, align 1
>   %2 = bitcast [2 x float]* %b to <2 x float>*
>   %3 = load <2 x float>, <2 x float>* %2, align 1
>   %4 = trunc i32 %component to i8
>   %5 = shufflevector <2 x float> %1, <2 x float> %3, <8 x i32> <i32 0, i32
> 1, i32 undef, i32 undef, i32 2, i32 3, i32 undef, i32 undef>
>   %6 = extractelement <8 x float> %5, i8 %4
>   %7 = insertelement <4 x float> undef, float %6, i64 0
>   %8 = extractelement <2 x float> %3, i32 1
>   %9 = insertelement <4 x float> %7, float %8, i64 1
>   %10 = extractelement <2 x float> %1, i32 1
>   %11 = insertelement <4 x float> %9, float %10, i64 2
>   %12 = insertelement <4 x float> %11, float %6, i64 3
>   %13 = bitcast [4 x float]* %o to <4 x float>*
>   store <4 x float> %12, <4 x float>* %13, align 1
>   ret void
> }
>
> Thanks for any help,
> -Neil.
>
> --
> Neil Henning
> Senior Software Engineer Compiler
> unity.com
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210831/c942744f/attachment.html>


More information about the llvm-dev mailing list