<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">In case this is useful, I can reproduce this on my x86 machine as follows:</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">$ rm CMakeCache.txt</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">$ cmake -G Ninja ../llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=True -DLLVM_LIT_ARGS=-v -DLLVM_TARGETS_TO_BUILD=ARM -DLLVM_DEFAULT_TARGET_TRIPLE=armv7-unknown-linux-gnu -DLLVM_PARALLEL_LINK_JOBS=2 -DLLVM_ENABLE_PROJECTS="llvm;clang-tools-extra;clang"<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">$ ninja check-llvm<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">--<br>/git/llvm-project/llvm/test/Transforms/LoopVectorize/interleave_short_tc.ll:28:10: error: CHECK: expected string not found in input<br>; CHECK: [[INDEX_NEXT]] = add i64 [[INDEX]], 4<br>         ^<br><stdin>:37:2: note: scanning from here<br> %vec.ind = phi <2 x i64> [ <i64 0, i64 1>, %<a href="http://vector.ph" target="_blank">vector.ph</a> ], [ %vec.ind.next, %vector.body ]<br> ^<br><stdin>:37:2: note: with "INDEX_NEXT" equal to "%index\\.next"<br> %vec.ind = phi <2 x i64> [ <i64 0, i64 1>, %<a href="http://vector.ph" target="_blank">vector.ph</a> ], [ %vec.ind.next, %vector.body ]<br> ^<br><stdin>:37:2: note: with "INDEX" equal to "%index"<br> %vec.ind = phi <2 x i64> [ <i64 0, i64 1>, %<a href="http://vector.ph" target="_blank">vector.ph</a> ], [ %vec.ind.next, %vector.body ]<br> ^<br><stdin>:39:3: note: possible intended match here<br> %0 = add i64 %index, 0<br>  ^<br><br>--<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Nov 1, 2019 at 2:54 AM Peter Smith via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello Craig,<br>
<br>
It looks like this test is failing on all of the Arm and AArch64<br>
buildbots and the Hexagon buildbot<br>
<br>
First failure: <a href="http://lab.llvm.org:8011/builders/clang-cmake-armv7-quick/builds/11215" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/builders/clang-cmake-armv7-quick/builds/11215</a><br>
<a href="http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/27318" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/27318</a><br>
<br>
Can you take a look?<br>
<br>
I ran the test on a local Arm machine and it is the third out of the<br>
three tests.<br>
error: CHECK: expected string not found in input<br>
; CHECK: [[INDEX_NEXT]] = add i64 [[INDEX]], 4<br>
         ^<br>
<stdin>:37:2: note: scanning from here<br>
 %vec.ind = phi <2 x i64> [ <i64 0, i64 1>, %<a href="http://vector.ph" rel="noreferrer" target="_blank">vector.ph</a> ], [<br>
%vec.ind.next, %vector.body ]<br>
 ^<br>
<stdin>:37:2: note: with "INDEX_NEXT" equal to "%index\\.next"<br>
 %vec.ind = phi <2 x i64> [ <i64 0, i64 1>, %<a href="http://vector.ph" rel="noreferrer" target="_blank">vector.ph</a> ], [<br>
%vec.ind.next, %vector.body ]<br>
 ^<br>
<stdin>:37:2: note: with "INDEX" equal to "%index"<br>
 %vec.ind = phi <2 x i64> [ <i64 0, i64 1>, %<a href="http://vector.ph" rel="noreferrer" target="_blank">vector.ph</a> ], [<br>
%vec.ind.next, %vector.body ]<br>
 ^<br>
<stdin>:39:3: note: possible intended match here<br>
 %0 = add i64 %index, 0<br>
  ^<br>
<br>
<br>
The output on the machine is:<br>
; ModuleID = '<stdin>'<br>
source_filename = "<stdin>"<br>
target datalayout =<br>
"e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"<br>
target triple = "x86_64-unknown-linux-gnu"<br>
<br>
@a = dso_local global [5 x i32] zeroinitializer, align 16<br>
@b = dso_local global [5 x i32] zeroinitializer, align 16<br>
<br>
define dso_local void @_Z3fooi(i32 %M) local_unnamed_addr {<br>
entry:<br>
  %cmp8 = icmp sgt i32 %M, 0<br>
  br i1 %cmp8, label %for.body.preheader, label %for.cond.cleanup<br>
<br>
for.body.preheader:                               ; preds = %entry<br>
  %wide.trip.count = zext i32 %M to i64<br>
  %min.iters.check = icmp ult i64 %wide.trip.count, 2<br>
  br i1 %min.iters.check, label %<a href="http://scalar.ph" rel="noreferrer" target="_blank">scalar.ph</a>, label %vector.memcheck<br>
<br>
vector.memcheck:                                  ; preds = %for.body.preheader<br>
  %scevgep = getelementptr [5 x i32], [5 x i32]* @a, i64 0, i64 %wide.trip.count<br>
  %scevgep1 = bitcast i32* %scevgep to i8*<br>
  %scevgep2 = getelementptr [5 x i32], [5 x i32]* @b, i64 0, i64<br>
%wide.trip.count<br>
  %scevgep23 = bitcast i32* %scevgep2 to i8*<br>
  %bound0 = icmp ult i8* bitcast ([5 x i32]* @a to i8*), %scevgep23<br>
  %bound1 = icmp ult i8* bitcast ([5 x i32]* @b to i8*), %scevgep1<br>
  %found.conflict = and i1 %bound0, %bound1<br>
  %memcheck.conflict = and i1 %found.conflict, true<br>
  br i1 %memcheck.conflict, label %<a href="http://scalar.ph" rel="noreferrer" target="_blank">scalar.ph</a>, label %<a href="http://vector.ph" rel="noreferrer" target="_blank">vector.ph</a><br>
<br>
<a href="http://vector.ph" rel="noreferrer" target="_blank">vector.ph</a>:                                        ; preds = %vector.memcheck<br>
  %n.mod.vf = urem i64 %wide.trip.count, 2<br>
  %n.vec = sub i64 %wide.trip.count, %n.mod.vf<br>
  br label %vector.body<br>
<br>
vector.body:                                      ; preds =<br>
%vector.body, %<a href="http://vector.ph" rel="noreferrer" target="_blank">vector.ph</a><br>
  %index = phi i64 [ 0, %<a href="http://vector.ph" rel="noreferrer" target="_blank">vector.ph</a> ], [ %index.next, %vector.body ]<br>
  %vec.ind = phi <2 x i64> [ <i64 0, i64 1>, %<a href="http://vector.ph" rel="noreferrer" target="_blank">vector.ph</a> ], [<br>
%vec.ind.next, %vector.body ]<br>
  %vec.ind4 = phi <2 x i32> [ <i32 0, i32 1>, %<a href="http://vector.ph" rel="noreferrer" target="_blank">vector.ph</a> ], [<br>
%vec.ind.next5, %vector.body ]<br>
  %0 = add i64 %index, 0<br>
  %1 = add i64 %index, 1<br>
  %2 = getelementptr inbounds [5 x i32], [5 x i32]* @b, i64 0, i64 %0<br>
  %3 = getelementptr inbounds i32, i32* %2, i32 0<br>
  %4 = bitcast i32* %3 to <2 x i32>*<br>
  %wide.load = load <2 x i32>, <2 x i32>* %4, align 4, !alias.scope !0<br>
  %5 = mul nsw <2 x i32> %wide.load, %vec.ind4<br>
  %6 = getelementptr inbounds [5 x i32], [5 x i32]* @a, i64 0, i64 %0<br>
  %7 = getelementptr inbounds i32, i32* %6, i32 0<br>
  %8 = bitcast i32* %7 to <2 x i32>*<br>
  %wide.load6 = load <2 x i32>, <2 x i32>* %8, align 4, !alias.scope<br>
!3, !noalias !0<br>
  %9 = add nsw <2 x i32> %wide.load6, %5<br>
  %10 = bitcast i32* %7 to <2 x i32>*<br>
  store <2 x i32> %9, <2 x i32>* %10, align 4, !alias.scope !3, !noalias !0<br>
  %index.next = add i64 %index, 2<br>
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 2, i64 2><br>
  %vec.ind.next5 = add <2 x i32> %vec.ind4, <i32 2, i32 2><br>
  %11 = icmp eq i64 %index.next, %n.vec<br>
  br i1 %11, label %middle.block, label %vector.body, !llvm.loop !5<br>
<br>
middle.block:                                     ; preds = %vector.body<br>
  %cmp.n = icmp eq i64 %wide.trip.count, %n.vec<br>
  br i1 %cmp.n, label %for.cond.cleanup.loopexit, label %<a href="http://scalar.ph" rel="noreferrer" target="_blank">scalar.ph</a><br>
<br>
<a href="http://scalar.ph" rel="noreferrer" target="_blank">scalar.ph</a>:                                        ; preds =<br>
%middle.block, %vector.memcheck, %for.body.preheader<br>
  %bc.resume.val = phi i64 [ %n.vec, %middle.block ], [ 0,<br>
%for.body.preheader ], [ 0, %vector.memcheck ]<br>
  br label %for.body<br>
<br>
for.cond.cleanup.loopexit:                        ; preds =<br>
%middle.block, %for.body<br>
  br label %for.cond.cleanup<br>
<br>
for.cond.cleanup:                                 ; preds =<br>
%for.cond.cleanup.loopexit, %entry<br>
  ret void<br>
<br>
for.body:                                         ; preds = %for.body,<br>
%<a href="http://scalar.ph" rel="noreferrer" target="_blank">scalar.ph</a><br>
  %indvars.iv = phi i64 [ %bc.resume.val, %<a href="http://scalar.ph" rel="noreferrer" target="_blank">scalar.ph</a> ], [<br>
%indvars.iv.next, %for.body ]<br>
  %arrayidx = getelementptr inbounds [5 x i32], [5 x i32]* @b, i64 0,<br>
i64 %indvars.iv<br>
  %12 = load i32, i32* %arrayidx, align 4<br>
  %13 = trunc i64 %indvars.iv to i32<br>
  %mul = mul nsw i32 %12, %13<br>
  %arrayidx2 = getelementptr inbounds [5 x i32], [5 x i32]* @a, i64 0,<br>
i64 %indvars.iv<br>
  %14 = load i32, i32* %arrayidx2, align 4<br>
  %add = add nsw i32 %14, %mul<br>
  store i32 %add, i32* %arrayidx2, align 4<br>
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1<br>
  %exitcond = icmp eq i64 %indvars.iv.next, %wide.trip.count<br>
  br i1 %exitcond, label %for.cond.cleanup.loopexit, label %for.body,<br>
!prof !7, !llvm.loop !8<br>
}<br>
<br>
!0 = !{!1}<br>
!1 = distinct !{!1, !2}<br>
!2 = distinct !{!2, !"LVerDomain"}<br>
!3 = !{!4}<br>
!4 = distinct !{!4, !2}<br>
!5 = distinct !{!5, !6}<br>
!6 = !{!"llvm.loop.isvectorized", i32 1}<br>
!7 = !{!"branch_weights", i32 1, i32 5}<br>
!8 = distinct !{!8, !6}<br>
<br>
On Thu, 31 Oct 2019 at 22:15, Craig Topper via llvm-commits<br>
<<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
><br>
><br>
> Author: Craig Topper<br>
> Date: 2019-10-31T15:11:26-07:00<br>
> New Revision: f8ba90d448c6703809340b3fdb90e733b6bc2d33<br>
><br>
> URL: <a href="https://github.com/llvm/llvm-project/commit/f8ba90d448c6703809340b3fdb90e733b6bc2d33" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/f8ba90d448c6703809340b3fdb90e733b6bc2d33</a><br>
> DIFF: <a href="https://github.com/llvm/llvm-project/commit/f8ba90d448c6703809340b3fdb90e733b6bc2d33.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/f8ba90d448c6703809340b3fdb90e733b6bc2d33.diff</a><br>
><br>
> LOG: [LV] Add test case that was supposed to go with D67948<br>
><br>
> I forgot to git add it when I committed for Evgeniy.<br>
><br>
> Added:<br>
>     llvm/test/Transforms/LoopVectorize/interleave_short_tc.ll<br>
><br>
> Modified:<br>
><br>
><br>
> Removed:<br>
><br>
><br>
><br>
> ################################################################################<br>
> diff  --git a/llvm/test/Transforms/LoopVectorize/interleave_short_tc.ll b/llvm/test/Transforms/LoopVectorize/interleave_short_tc.ll<br>
> new file mode 100644<br>
> index 000000000000..78e69cb2d647<br>
> --- /dev/null<br>
> +++ b/llvm/test/Transforms/LoopVectorize/interleave_short_tc.ll<br>
> @@ -0,0 +1,59 @@<br>
> +; Check that we won't interleave by more than "best known" estimated trip count.<br>
> +<br>
> +; The loop is expected to be vectorized by 4 and interleaving suppresed due to<br>
> +; short trip count which is controled by "tiny-trip-count-interleave-threshold".<br>
> +; RUN: opt  -passes=loop-vectorize -force-vector-width=4 -vectorizer-min-trip-count=4 -S < %s |  FileCheck %s<br>
> +;<br>
> +; The loop is expected to be vectorized by 4 and computed interleaving factor is 1.<br>
> +; Thus the resulting step is 4.<br>
> +; RUN: opt  -passes=loop-vectorize -force-vector-width=4 -vectorizer-min-trip-count=4 -tiny-trip-count-interleave-threshold=4 -S < %s |  FileCheck %s<br>
> +<br>
> +; The loop is expected to be vectorized by 2 and computed interleaving factor is 2.<br>
> +; Thus the resulting step is 4.<br>
> +; RUN: opt  -passes=loop-vectorize -force-vector-width=2 -vectorizer-min-trip-count=4 -tiny-trip-count-interleave-threshold=4 -S < %s |  FileCheck %s<br>
> +<br>
> +; Check that we won't interleave by more than "best known" estimated trip count.<br>
> +<br>
> +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"<br>
> +target triple = "x86_64-unknown-linux-gnu"<br>
> +<br>
> +@a = dso_local global [5 x i32] zeroinitializer, align 16<br>
> +@b = dso_local global [5 x i32] zeroinitializer, align 16<br>
> +<br>
> +; Function Attrs: nofree norecurse nounwind uwtable<br>
> +define dso_local void @_Z3fooi(i32 %M) local_unnamed_addr {<br>
> +; CHECK-LABEL: @_Z3fooi(<br>
> +; CHECK:       [[VECTOR_BODY:vector\.body]]:<br>
> +; CHECK:    [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH:%.*]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]<br>
> +; CHECK:    [[INDEX_NEXT]] = add i64 [[INDEX]], 4<br>
> +;<br>
> +entry:<br>
> +  %cmp8 = icmp sgt i32 %M, 0<br>
> +  br i1 %cmp8, label %for.body.preheader, label %for.cond.cleanup<br>
> +<br>
> +for.body.preheader:                               ; preds = %entry<br>
> +  %wide.trip.count = zext i32 %M to i64<br>
> +  br label %for.body<br>
> +<br>
> +for.cond.cleanup.loopexit:                        ; preds = %for.body<br>
> +  br label %for.cond.cleanup<br>
> +<br>
> +for.cond.cleanup:                                 ; preds = %for.cond.cleanup.loopexit, %entry<br>
> +  ret void<br>
> +<br>
> +for.body:                                         ; preds = %for.body, %for.body.preheader<br>
> +  %indvars.iv = phi i64 [ 0, %for.body.preheader ], [ %indvars.iv.next, %for.body ]<br>
> +  %arrayidx = getelementptr inbounds [5 x i32], [5 x i32]* @b, i64 0, i64 %indvars.iv<br>
> +  %0 = load i32, i32* %arrayidx, align 4<br>
> +  %1 = trunc i64 %indvars.iv to i32<br>
> +  %mul = mul nsw i32 %0, %1<br>
> +  %arrayidx2 = getelementptr inbounds [5 x i32], [5 x i32]* @a, i64 0, i64 %indvars.iv<br>
> +  %2 = load i32, i32* %arrayidx2, align 4<br>
> +  %add = add nsw i32 %2, %mul<br>
> +  store i32 %add, i32* %arrayidx2, align 4<br>
> +  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1<br>
> +  %exitcond = icmp eq i64 %indvars.iv.next, %wide.trip.count<br>
> +  br i1 %exitcond, label %for.cond.cleanup.loopexit, label %for.body, !prof !1<br>
> +}<br>
> +<br>
> +!1 = !{!"branch_weights", i32 1, i32 5}<br>
><br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
> <a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>