SLP Vectorizer bug in trunk

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(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.

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@lists.llvm.org>:

Hey Anton,

Ok cool! No rush on a fix our end - I just speculatively (and intermittently) bump our trunk version to ensure we stay in lock-step with any of the frequent API changes that tip of tree brings.

Cheers,
-Neil.

Discussed here https://reviews.llvm.org/D108703#2974289 and reverted the patch for a while. Thanks for the reproducer!

As for the bugzilla (your another question) – AFAIK migration to something like github issue tracker isn’t planned.

Thank,Anton

вт, 31 авг. 2021 г. в 13:11, Neil Henning <neil.henning@unity3d.com>: