[llvm] [SLP]Improve findReusedOrderedScalars and graph rotation. (PR #77529)
Alexey Bataev via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 29 06:24:18 PST 2024
alexey-bataev wrote:
> Heads-up - this causes a miscompile in our tests.
>
> We are still working on the reduced reproducer, but so far the only difference in the miscompiled function looks like:
>
> ```
> ; Function Attrs: mustprogress nounwind uwtable
> define void @foo(ptr dead_on_unwind noalias nonnull writable sret(%"class.foo") align 8 %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(40) %1) local_unnamed_addr #0 align 32 {
> tail call void @bar(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef null) #9
> %3 = getelementptr inbounds i8, ptr %1, i64 24
> %4 = getelementptr inbounds i8, ptr %0, i64 24
> %5 = getelementptr inbounds i8, ptr %0, i64 16
> %6 = load i32, ptr %5, align 8
> %7 = load <4 x float>, ptr %3, align 8
> %8 = shufflevector <4 x float> %7, <4 x float> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
> %9 = fcmp olt <4 x float> %7, %8
> %10 = shufflevector <4 x float> %7, <4 x float> poison, <4 x i32> <i32 2, i32 3, i32 2, i32 3>
> %11 = shufflevector <4 x float> %7, <4 x float> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
> %12 = select <4 x i1> %9, <4 x float> %10, <4 x float> %11
> - %13 = shufflevector <4 x float> %12, <4 x float> poison, <4 x i32> <i32 2, i32 0, i32 3, i32 1>
> + %13 = shufflevector <4 x float> %12, <4 x float> poison, <4 x i32> <i32 1, i32 2, i32 3, i32 0>
> store <4 x float> %13, ptr %4, align 8
> %14 = or i32 %6, 15
> store i32 %14, ptr %5, align 8
> ret void
> }
> ```
Waiting for the reproducer
https://github.com/llvm/llvm-project/pull/77529
More information about the llvm-commits
mailing list