[llvm-dev] SLP Vectorizer bug in trunk (original) (raw)

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


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 at unity3d.com>:

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. On Tue, Aug 31, 2021 at 10:53 AM Anton Afanasyev <_ _anton.a.afanasyev at gmail.com> wrote:

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

-- 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/bd0b662a/attachment.html>



More information about the llvm-dev mailing list