[llvm-dev] SLP Vectorizer bug in trunk

Neil Henning via llvm-dev llvm-dev at lists.llvm.org
Tue Aug 31 01:19:36 PDT 2021


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210831/b3cce18b/attachment.html>


More information about the llvm-dev mailing list