diff --git a/llvm/test/Transforms/LoopVectorize/iv-select-cmp.ll b/llvm/test/Transforms/LoopVectorize/iv-select-cmp.ll --- a/llvm/test/Transforms/LoopVectorize/iv-select-cmp.ll +++ b/llvm/test/Transforms/LoopVectorize/iv-select-cmp.ll @@ -214,8 +214,30 @@ ret float %cond } -define i64 @not_vectorized_select_decreasing_induction_icmp(ptr nocapture readonly %a, ptr nocapture readonly %b, i64 %rdx.start, i64 %n) { -; CHECK-LABEL: @not_vectorized_select_decreasing_induction_icmp +define i64 @not_vectorized_select_decreasing_induction_icmp_const_start(ptr nocapture readonly %a) { +; CHECK-LABEL: @not_vectorized_select_decreasing_induction_icmp_const_start +; CHECK-NOT: vector.body: +; +entry: + br label %for.body + +for.body: ; preds = %entry, %for.body + %iv = phi i64 [ 19999, %entry ], [ %dec, %for.body ] + %rdx = phi i64 [ 331, %entry ], [ %spec.select, %for.body ] + %arrayidx = getelementptr inbounds i64, ptr %a, i64 %iv + %0 = load i64, ptr %arrayidx, align 8 + %cmp = icmp sgt i64 %0, 3 + %spec.select = select i1 %cmp, i64 %iv, i64 %rdx + %dec = add nsw i64 %iv, -1 + %cmp.not = icmp eq i64 %iv, 0 + br i1 %cmp.not, label %exit, label %for.body + +exit: ; preds = %for.body + ret i64 %spec.select +} + +define i64 @not_vectorized_select_decreasing_induction_icmp_non_const_start(ptr nocapture readonly %a, ptr nocapture readonly %b, i64 %rdx.start, i64 %n) { +; CHECK-LABEL: @not_vectorized_select_decreasing_induction_icmp_non_const_start ; CHECK-NOT: vector.body: ; entry: