[llvm-dev] SLP Vectorizer bug in trunk

Neil Henning via llvm-dev llvm-dev at lists.llvm.org
Tue Aug 31 03:10:49 PDT 2021


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

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


More information about the llvm-dev mailing list