diff --git a/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp b/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp index e6ee2e06cafab..3fe4621eca70d 100644 --- a/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp +++ b/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp @@ -288,6 +288,7 @@ void SimplifyIndvar::eliminateIVComparison(ICmpInst *ICmp, LLVM_DEBUG(dbgs() << "INDVARS: Turn to unsigned comparison: " << *ICmp << '\n'); ICmp->setPredicate(ICmpInst::getUnsignedPredicate(OriginalPred)); + ICmp->setSameSign(); } else return; diff --git a/llvm/test/Analysis/ScalarEvolution/guards.ll b/llvm/test/Analysis/ScalarEvolution/guards.ll index ea17c5840067a..431b4b189ca60 100644 --- a/llvm/test/Analysis/ScalarEvolution/guards.ll +++ b/llvm/test/Analysis/ScalarEvolution/guards.ll @@ -23,7 +23,7 @@ define void @test_1(ptr %cond_buf, ptr %len_buf) { ; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_INC:%.*]], [[LOOP]] ] ; CHECK-NEXT: [[IV_INC]] = add nsw i32 [[IV]], 1 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 true) [ "deopt"() ] -; CHECK-NEXT: [[IV_INC_CMP:%.*]] = icmp ult i32 [[IV_INC]], [[LEN]] +; CHECK-NEXT: [[IV_INC_CMP:%.*]] = icmp samesign ult i32 [[IV_INC]], [[LEN]] ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[IV_INC_CMP]]) [ "deopt"() ] ; CHECK-NEXT: [[BECOND:%.*]] = load volatile i1, ptr [[COND_BUF]], align 1 ; CHECK-NEXT: br i1 [[BECOND]], label [[LOOP]], label [[LEAVE:%.*]] @@ -57,14 +57,14 @@ define void @test_2(i32 %n, ptr %len_buf) { ; CHECK-SAME: (i32 [[N:%.*]], ptr [[LEN_BUF:%.*]]) { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[LEN:%.*]] = load i32, ptr [[LEN_BUF]], align 4, !range [[RNG1:![0-9]+]] -; CHECK-NEXT: [[TMP0:%.*]] = zext i32 [[LEN]] to i64 +; CHECK-NEXT: [[TMP0:%.*]] = sext i32 [[LEN]] to i64 ; CHECK-NEXT: [[TMP1:%.*]] = zext i32 [[N]] to i64 ; CHECK-NEXT: br label [[LOOP:%.*]] ; CHECK: loop: ; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[INDVARS_IV_NEXT:%.*]], [[LOOP]] ], [ 0, [[ENTRY:%.*]] ] ; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1 ; CHECK-NEXT: call void @use(i64 [[INDVARS_IV]]) -; CHECK-NEXT: [[IV_INC_CMP:%.*]] = icmp ult i64 [[INDVARS_IV_NEXT]], [[TMP0]] +; CHECK-NEXT: [[IV_INC_CMP:%.*]] = icmp samesign ult i64 [[INDVARS_IV_NEXT]], [[TMP0]] ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[IV_INC_CMP]]) [ "deopt"() ] ; CHECK-NEXT: [[BECOND:%.*]] = icmp ne i64 [[INDVARS_IV]], [[TMP1]] ; CHECK-NEXT: br i1 [[BECOND]], label [[LOOP]], label [[LEAVE:%.*]] diff --git a/llvm/test/Transforms/IndVarSimplify/canonicalize-cmp.ll b/llvm/test/Transforms/IndVarSimplify/canonicalize-cmp.ll index 943d1d7f7aaaa..99baa6105655d 100644 --- a/llvm/test/Transforms/IndVarSimplify/canonicalize-cmp.ll +++ b/llvm/test/Transforms/IndVarSimplify/canonicalize-cmp.ll @@ -12,7 +12,7 @@ define i32 @test_01(i32 %a, i32 %b, ptr %p) { ; CHECK-NEXT: br label [[LOOP_ENTRY:%.*]] ; CHECK: loop.entry: ; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_BE:%.*]] ] -; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i32 [[IV]], 100 +; CHECK-NEXT: [[CMP1:%.*]] = icmp samesign ult i32 [[IV]], 100 ; CHECK-NEXT: br i1 [[CMP1]], label [[B1:%.*]], label [[B2:%.*]] ; CHECK: b1: ; CHECK-NEXT: store i32 [[IV]], ptr [[P:%.*]], align 4 @@ -80,7 +80,7 @@ define i32 @test_02(i32 %a, i32 %b, ptr %p) { ; CHECK-NEXT: br label [[LOOP_ENTRY:%.*]] ; CHECK: loop.entry: ; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_BE:%.*]] ] -; CHECK-NEXT: [[CMP1:%.*]] = icmp ugt i32 100, [[IV]] +; CHECK-NEXT: [[CMP1:%.*]] = icmp samesign ugt i32 100, [[IV]] ; CHECK-NEXT: br i1 [[CMP1]], label [[B1:%.*]], label [[B2:%.*]] ; CHECK: b1: ; CHECK-NEXT: store i32 [[IV]], ptr [[P:%.*]], align 4 diff --git a/llvm/test/Transforms/IndVarSimplify/cycled_phis.ll b/llvm/test/Transforms/IndVarSimplify/cycled_phis.ll index 22f98720520eb..9843a7ec028b6 100644 --- a/llvm/test/Transforms/IndVarSimplify/cycled_phis.ll +++ b/llvm/test/Transforms/IndVarSimplify/cycled_phis.ll @@ -16,7 +16,7 @@ define i32 @trivial.case(ptr %len.ptr) { ; CHECK-NEXT: br label [[LOOP:%.*]] ; CHECK: loop: ; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[PREHEADER]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ] -; CHECK-NEXT: [[SIGNED_CMP:%.*]] = icmp ult i32 [[IV]], [[LEN]] +; CHECK-NEXT: [[SIGNED_CMP:%.*]] = icmp samesign ult i32 [[IV]], [[LEN]] ; CHECK-NEXT: br i1 [[SIGNED_CMP]], label [[SIGNED_PASSED:%.*]], label [[FAILED_SIGNED:%.*]] ; CHECK: signed.passed: ; CHECK-NEXT: br i1 true, label [[BACKEDGE]], label [[FAILED_UNSIGNED:%.*]] @@ -247,7 +247,7 @@ define i32 @start.from.sibling.iv.wide(ptr %len.ptr, ptr %sibling.len.ptr) { ; CHECK-NEXT: br label [[LOOP:%.*]] ; CHECK: loop: ; CHECK-NEXT: [[IV:%.*]] = phi i32 [ [[SIBLING_IV_NEXT_TRUNC]], [[PREHEADER]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ] -; CHECK-NEXT: [[SIGNED_CMP:%.*]] = icmp ult i32 [[IV]], [[LEN]] +; CHECK-NEXT: [[SIGNED_CMP:%.*]] = icmp samesign ult i32 [[IV]], [[LEN]] ; CHECK-NEXT: br i1 [[SIGNED_CMP]], label [[SIGNED_PASSED:%.*]], label [[FAILED_SIGNED:%.*]] ; CHECK: signed.passed: ; CHECK-NEXT: br i1 true, label [[BACKEDGE]], label [[FAILED_UNSIGNED:%.*]] diff --git a/llvm/test/Transforms/IndVarSimplify/floating-point-iv.ll b/llvm/test/Transforms/IndVarSimplify/floating-point-iv.ll index 26393e796320a..b1ef50382c070 100644 --- a/llvm/test/Transforms/IndVarSimplify/floating-point-iv.ll +++ b/llvm/test/Transforms/IndVarSimplify/floating-point-iv.ll @@ -10,7 +10,7 @@ define void @test1() nounwind { ; CHECK-NEXT: [[INDVAR_CONV:%.*]] = sitofp i32 [[IV_INT]] to double ; CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @foo(double [[INDVAR_CONV]]) #[[ATTR0:[0-9]+]] ; CHECK-NEXT: [[DOTINT]] = add nuw nsw i32 [[IV_INT]], 1 -; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[DOTINT]], 10000 +; CHECK-NEXT: [[TMP1:%.*]] = icmp samesign ult i32 [[DOTINT]], 10000 ; CHECK-NEXT: br i1 [[TMP1]], label [[BB]], label [[RETURN:%.*]] ; CHECK: return: ; CHECK-NEXT: ret void @@ -145,7 +145,7 @@ define double @test_max_be() { ; CHECK-NEXT: [[INDVAR_CONV:%.*]] = sitofp i32 [[TMP11_INT]] to double ; CHECK-NEXT: [[TMP12]] = fadd double [[TMP10]], [[INDVAR_CONV]] ; CHECK-NEXT: [[TMP13_INT]] = add nuw nsw i32 [[TMP11_INT]], 1 -; CHECK-NEXT: [[TMP14:%.*]] = icmp ult i32 [[TMP13_INT]], 99999 +; CHECK-NEXT: [[TMP14:%.*]] = icmp samesign ult i32 [[TMP13_INT]], 99999 ; CHECK-NEXT: br i1 [[TMP14]], label [[BB22]], label [[BB6:%.*]] ; CHECK: bb22: ; CHECK-NEXT: br i1 true, label [[BB8]], label [[BB6]] @@ -184,7 +184,7 @@ define float @test_max_be2() { ; CHECK-NEXT: [[INDVAR_CONV:%.*]] = sitofp i32 [[TMP11_INT]] to float ; CHECK-NEXT: [[TMP12]] = fadd float [[TMP10]], [[INDVAR_CONV]] ; CHECK-NEXT: [[TMP13_INT]] = add nuw nsw i32 [[TMP11_INT]], 1 -; CHECK-NEXT: [[TMP14:%.*]] = icmp ult i32 [[TMP13_INT]], 99999 +; CHECK-NEXT: [[TMP14:%.*]] = icmp samesign ult i32 [[TMP13_INT]], 99999 ; CHECK-NEXT: br i1 [[TMP14]], label [[BB22]], label [[BB6:%.*]] ; CHECK: bb22: ; CHECK-NEXT: br i1 true, label [[BB8]], label [[BB6]] @@ -224,7 +224,7 @@ define float @test_max_be3() { ; CHECK-NEXT: [[INDVAR_CONV:%.*]] = sitofp i32 [[TMP11_INT]] to float ; CHECK-NEXT: [[TMP12]] = fadd float [[TMP10]], [[INDVAR_CONV]] ; CHECK-NEXT: [[TMP13_INT]] = add nuw nsw i32 [[TMP11_INT]], 1 -; CHECK-NEXT: [[TMP14:%.*]] = icmp ult i32 [[TMP13_INT]], 99999 +; CHECK-NEXT: [[TMP14:%.*]] = icmp samesign ult i32 [[TMP13_INT]], 99999 ; CHECK-NEXT: br i1 [[TMP14]], label [[BB22]], label [[BB6:%.*]] ; CHECK: bb22: ; CHECK-NEXT: br i1 true, label [[BB8]], label [[BB6]] @@ -263,7 +263,7 @@ define void @fcmp1() nounwind { ; CHECK-NEXT: br label [[BB:%.*]] ; CHECK: bb: ; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ] -; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i64 [[IV]], 20000 +; CHECK-NEXT: [[CMP1:%.*]] = icmp samesign ult i64 [[IV]], 20000 ; CHECK-NEXT: br i1 [[CMP1]], label [[BACKEDGE]], label [[RETURN:%.*]] ; CHECK: backedge: ; CHECK-NEXT: [[IV_FP:%.*]] = sitofp i64 [[IV]] to double @@ -299,7 +299,7 @@ define void @fcmp2() nounwind { ; CHECK-NEXT: br label [[BB:%.*]] ; CHECK: bb: ; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ] -; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i64 [[IV]], 2000 +; CHECK-NEXT: [[CMP1:%.*]] = icmp samesign ult i64 [[IV]], 2000 ; CHECK-NEXT: br i1 [[CMP1]], label [[BACKEDGE]], label [[RETURN:%.*]] ; CHECK: backedge: ; CHECK-NEXT: [[IV_FP:%.*]] = sitofp i64 [[IV]] to double @@ -389,7 +389,7 @@ define void @pr55505_remove_redundant_fptosi_for_float_iv(i32 %index, ptr %dst) ; CHECK-NEXT: call void @use.i16(i16 [[FLOAT_IV_INT_TRUNC2]]) ; CHECK-NEXT: call void @use.i64(i64 [[FLOAT_IV_INT_ZEXT]]) ; CHECK-NEXT: [[FLOAT_IV_NEXT_INT]] = add nsw i32 [[FLOAT_IV_INT]], -1 -; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[FLOAT_IV_NEXT_INT]], 0 +; CHECK-NEXT: [[CMP:%.*]] = icmp samesign ugt i32 [[FLOAT_IV_NEXT_INT]], 0 ; CHECK-NEXT: br i1 [[CMP]], label [[LOOP]], label [[EXIT:%.*]] ; CHECK: exit: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IndVarSimplify/floating-point-small-iv.ll b/llvm/test/Transforms/IndVarSimplify/floating-point-small-iv.ll index 90d84eb5a1add..d2c7cc4128306 100644 --- a/llvm/test/Transforms/IndVarSimplify/floating-point-small-iv.ll +++ b/llvm/test/Transforms/IndVarSimplify/floating-point-small-iv.ll @@ -261,7 +261,7 @@ define void @sitofp_fptoui_range() { ; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [16777219 x i32], ptr @array, i64 0, i64 [[IDXPROM]] ; CHECK-NEXT: store i32 [[IV_INT]], ptr [[ARRAYIDX]], align 4 ; CHECK-NEXT: [[DEC_INT]] = add nsw i32 [[IV_INT]], -1 -; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[DEC_INT]], 0 +; CHECK-NEXT: [[CMP:%.*]] = icmp samesign ugt i32 [[DEC_INT]], 0 ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY]], label [[CLEANUP:%.*]] ; CHECK: cleanup: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IndVarSimplify/implied-via-addition.ll b/llvm/test/Transforms/IndVarSimplify/implied-via-addition.ll index 865c10e3913aa..c3dd44c4872aa 100644 --- a/llvm/test/Transforms/IndVarSimplify/implied-via-addition.ll +++ b/llvm/test/Transforms/IndVarSimplify/implied-via-addition.ll @@ -53,7 +53,7 @@ define void @test_02(i8 %t) { ; CHECK-NEXT: [[IDX:%.*]] = phi ptr [ [[T_PTR]], %[[ENTRY]] ], [ [[SNEXT:%.*]], %[[LOOP]] ] ; CHECK-NEXT: [[SNEXT]] = getelementptr inbounds i8, ptr [[IDX]], i64 1 ; CHECK-NEXT: call void @use(i1 true) -; CHECK-NEXT: [[BE:%.*]] = icmp ult ptr [[SNEXT]], [[P_42]] +; CHECK-NEXT: [[BE:%.*]] = icmp samesign ult ptr [[SNEXT]], [[P_42]] ; CHECK-NEXT: br i1 [[BE]], label %[[LOOP]], label %[[EXIT:.*]] ; CHECK: [[EXIT]]: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IndVarSimplify/iv-sext.ll b/llvm/test/Transforms/IndVarSimplify/iv-sext.ll index 95a036f0e54c7..8ec82188d8fb1 100644 --- a/llvm/test/Transforms/IndVarSimplify/iv-sext.ll +++ b/llvm/test/Transforms/IndVarSimplify/iv-sext.ll @@ -26,7 +26,7 @@ define void @t(ptr %pval1, ptr %peakWeight, ptr %nrgReducePeakrate, i32 %bandEdg ; CHECK-NEXT: [[HIPART_119:%.*]] = phi i32 [ [[HIPART_0_LCSSA:%.*]], [[BB8]] ], [ 0, [[BB_NPH22]] ] ; CHECK-NEXT: [[LOPART_118:%.*]] = phi i32 [ [[LOPART_0_LCSSA:%.*]], [[BB8]] ], [ 0, [[BB_NPH22]] ] ; CHECK-NEXT: [[PEAKCOUNT_117:%.*]] = phi float [ [[PEAKCOUNT_2_LCSSA:%.*]], [[BB8]] ], [ [[VAL]], [[BB_NPH22]] ] -; CHECK-NEXT: [[VAL4:%.*]] = icmp ugt i64 [[INDVARS_IV1]], 0 +; CHECK-NEXT: [[VAL4:%.*]] = icmp samesign ugt i64 [[INDVARS_IV1]], 0 ; CHECK-NEXT: br i1 [[VAL4]], label [[BB1:%.*]], label [[BB3_PREHEADER:%.*]] ; CHECK: bb1: ; CHECK-NEXT: [[TMP1:%.*]] = add nsw i64 [[INDVARS_IV1]], -1 diff --git a/llvm/test/Transforms/IndVarSimplify/lftr.ll b/llvm/test/Transforms/IndVarSimplify/lftr.ll index a67709829b2f4..5ee62ba357ab6 100644 --- a/llvm/test/Transforms/IndVarSimplify/lftr.ll +++ b/llvm/test/Transforms/IndVarSimplify/lftr.ll @@ -43,7 +43,7 @@ define i32 @pre_to_post_sub() { ; CHECK-NEXT: [[I:%.*]] = phi i32 [ 1000, [[ENTRY:%.*]] ], [ [[I_NEXT:%.*]], [[LOOP]] ] ; CHECK-NEXT: [[I_NEXT]] = sub nsw i32 [[I]], 1 ; CHECK-NEXT: store i32 [[I]], ptr @A, align 4 -; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[I]], 0 +; CHECK-NEXT: [[C:%.*]] = icmp samesign ugt i32 [[I]], 0 ; CHECK-NEXT: br i1 [[C]], label [[LOOP]], label [[LOOPEXIT:%.*]] ; CHECK: loopexit: ; CHECK-NEXT: ret i32 0 @@ -270,7 +270,7 @@ define void @use_before_branch() { ; CHECK-NEXT: br label [[LOOPENTRY_0:%.*]] ; CHECK: loopentry.0: ; CHECK-NEXT: [[MB_Y_0:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[T152:%.*]], [[LOOPENTRY_1:%.*]] ] -; CHECK-NEXT: [[T14:%.*]] = icmp ule i32 [[MB_Y_0]], 3 +; CHECK-NEXT: [[T14:%.*]] = icmp samesign ule i32 [[MB_Y_0]], 3 ; CHECK-NEXT: br i1 [[T14]], label [[LOOPENTRY_1]], label [[LOOPEXIT_0:%.*]] ; CHECK: loopentry.1: ; CHECK-NEXT: [[T152]] = add nuw nsw i32 [[MB_Y_0]], 2 diff --git a/llvm/test/Transforms/IndVarSimplify/pr102597.ll b/llvm/test/Transforms/IndVarSimplify/pr102597.ll index 9de614524444d..f76941e36d0fa 100644 --- a/llvm/test/Transforms/IndVarSimplify/pr102597.ll +++ b/llvm/test/Transforms/IndVarSimplify/pr102597.ll @@ -15,7 +15,7 @@ define void @test() { ; CHECK-NEXT: br label %[[LOOP_LATCH]] ; CHECK: [[LOOP_LATCH]]: ; CHECK-NEXT: [[IV_DEC]] = add nsw i128 [[IV]], -1 -; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i128 [[IV]], 0 +; CHECK-NEXT: [[CMP:%.*]] = icmp samesign ugt i128 [[IV]], 0 ; CHECK-NEXT: br i1 [[CMP]], label %[[LOOP]], label %[[EXIT:.*]] ; CHECK: [[EXIT]]: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IndVarSimplify/pr126012.ll b/llvm/test/Transforms/IndVarSimplify/pr126012.ll index 5189fe020dd3b..8fc28822c51c7 100644 --- a/llvm/test/Transforms/IndVarSimplify/pr126012.ll +++ b/llvm/test/Transforms/IndVarSimplify/pr126012.ll @@ -15,7 +15,7 @@ define i32 @test() { ; CHECK-NEXT: [[COND1:%.*]] = icmp eq i32 [[INDVAR3]], 0 ; CHECK-NEXT: br i1 [[COND1]], label %[[FOR_INC]], label %[[FOR_END:.*]] ; CHECK: [[FOR_END]]: -; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[INDVAR2]], 0 +; CHECK-NEXT: [[CMP:%.*]] = icmp samesign ugt i32 [[INDVAR2]], 0 ; CHECK-NEXT: [[EXT:%.*]] = zext i1 [[CMP]] to i32 ; CHECK-NEXT: br label %[[FOR_INC]] ; CHECK: [[FOR_INC]]: diff --git a/llvm/test/Transforms/IndVarSimplify/pr66986.ll b/llvm/test/Transforms/IndVarSimplify/pr66986.ll index 1b4ef1619b12d..ec69ecfebf21c 100644 --- a/llvm/test/Transforms/IndVarSimplify/pr66986.ll +++ b/llvm/test/Transforms/IndVarSimplify/pr66986.ll @@ -20,7 +20,7 @@ define i32 @test(i1 %c, i32 %arg1, i32 %arg2) { ; CHECK: loop2: ; CHECK-NEXT: [[PHI6:%.*]] = phi i64 [ [[ADD7:%.*]], [[LOOP2]] ], [ 0, [[IF]] ] ; CHECK-NEXT: [[ADD7]] = add nuw nsw i64 [[PHI6]], 1 -; CHECK-NEXT: [[ICMP:%.*]] = icmp ult i64 [[PHI6]], [[ZEXT]] +; CHECK-NEXT: [[ICMP:%.*]] = icmp samesign ult i64 [[PHI6]], [[ZEXT]] ; CHECK-NEXT: br i1 [[ICMP]], label [[LOOP2]], label [[LOOP_LATCH_LOOPEXIT:%.*]] ; CHECK: loop.latch.loopexit: ; CHECK-NEXT: br label [[LOOP_LATCH]] diff --git a/llvm/test/Transforms/IndVarSimplify/preserving-debugloc.ll b/llvm/test/Transforms/IndVarSimplify/preserving-debugloc.ll index 7d23c8697efa9..47fa5904732bf 100644 --- a/llvm/test/Transforms/IndVarSimplify/preserving-debugloc.ll +++ b/llvm/test/Transforms/IndVarSimplify/preserving-debugloc.ll @@ -11,7 +11,7 @@ define void @test1() !dbg !5 { ; CHECK: [[IV_INT:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[DOTINT:%.*]], [[BB]] ], !dbg ![[DBG1:[0-9]+]] ; CHECK: [[INDVAR_CONV:%.*]] = sitofp i32 [[IV_INT]] to double, !dbg ![[DBG1]] ; CHECK: [[DOTINT]] = add nuw nsw i32 [[IV_INT]], 1, !dbg ![[DBG2:[0-9]+]] -; CHECK: [[TMP1:%.*]] = icmp ult i32 [[DOTINT]], 10000, !dbg ![[DBG3:[0-9]+]] +; CHECK: [[TMP1:%.*]] = icmp samesign ult i32 [[DOTINT]], 10000, !dbg ![[DBG3:[0-9]+]] ; CHECK: ![[DBG1]] = !DILocation(line: 2 ; CHECK: ![[DBG2]] = !DILocation(line: 4 ; CHECK: ![[DBG3]] = !DILocation(line: 5 diff --git a/llvm/test/Transforms/IndVarSimplify/scev-invalidation.ll b/llvm/test/Transforms/IndVarSimplify/scev-invalidation.ll index 5cecdac7d99f4..a92d328df99ca 100644 --- a/llvm/test/Transforms/IndVarSimplify/scev-invalidation.ll +++ b/llvm/test/Transforms/IndVarSimplify/scev-invalidation.ll @@ -80,7 +80,7 @@ define i8 @l(i32 %inc, i1 %tobool.not.i) { ; CHECK: inner: ; CHECK-NEXT: [[C_05_I:%.*]] = phi i32 [ [[INC_I:%.*]], [[INNER]] ], [ 0, [[OUTER_HEADER]] ] ; CHECK-NEXT: [[INC_I]] = add nuw nsw i32 [[C_05_I]], 1 -; CHECK-NEXT: [[CMP_I:%.*]] = icmp ugt i32 [[C_05_I]], 0 +; CHECK-NEXT: [[CMP_I:%.*]] = icmp samesign ugt i32 [[C_05_I]], 0 ; CHECK-NEXT: [[OR_COND_I:%.*]] = select i1 [[CMP_I]], i1 true, i1 [[TOBOOL_NOT_I:%.*]] ; CHECK-NEXT: br i1 [[OR_COND_I]], label [[OUTER_LATCH:%.*]], label [[INNER]] ; CHECK: outer.latch: diff --git a/llvm/test/Transforms/IndVarSimplify/shift-range-checks.ll b/llvm/test/Transforms/IndVarSimplify/shift-range-checks.ll index 4f0ca5a854d57..1334d671d5a69 100644 --- a/llvm/test/Transforms/IndVarSimplify/shift-range-checks.ll +++ b/llvm/test/Transforms/IndVarSimplify/shift-range-checks.ll @@ -12,7 +12,7 @@ define void @test_01(ptr %p, i32 %shift) { ; CHECK-NEXT: br label [[LOOP:%.*]] ; CHECK: loop: ; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ] -; CHECK-NEXT: [[LESS_THAN_SHIFTED:%.*]] = icmp ult i32 [[IV]], [[X_SHIFTED]] +; CHECK-NEXT: [[LESS_THAN_SHIFTED:%.*]] = icmp samesign ult i32 [[IV]], [[X_SHIFTED]] ; CHECK-NEXT: br i1 [[LESS_THAN_SHIFTED]], label [[GUARDED:%.*]], label [[FAILURE:%.*]] ; CHECK: guarded: ; CHECK-NEXT: br i1 true, label [[BACKEDGE]], label [[NEVER_HAPPENS:%.*]] @@ -68,7 +68,7 @@ define void @test_02(ptr %p, i32 %shift) { ; CHECK-NEXT: br label [[LOOP:%.*]] ; CHECK: loop: ; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ] -; CHECK-NEXT: [[LESS_THAN_SHIFTED:%.*]] = icmp ugt i32 [[X_SHIFTED]], [[IV]] +; CHECK-NEXT: [[LESS_THAN_SHIFTED:%.*]] = icmp samesign ugt i32 [[X_SHIFTED]], [[IV]] ; CHECK-NEXT: br i1 [[LESS_THAN_SHIFTED]], label [[GUARDED:%.*]], label [[FAILURE:%.*]] ; CHECK: guarded: ; CHECK-NEXT: br i1 true, label [[BACKEDGE]], label [[NEVER_HAPPENS:%.*]] diff --git a/llvm/test/Transforms/LoopDeletion/invalidate-scev-after-hoisting.ll b/llvm/test/Transforms/LoopDeletion/invalidate-scev-after-hoisting.ll index 4827fb50dab26..bdd51c2b6bc53 100644 --- a/llvm/test/Transforms/LoopDeletion/invalidate-scev-after-hoisting.ll +++ b/llvm/test/Transforms/LoopDeletion/invalidate-scev-after-hoisting.ll @@ -21,7 +21,7 @@ define void @test_pr57837() { ; CHECK-NEXT: call void @use(i32 [[ADD_1]]) ; CHECK-NEXT: [[INNER_IV_NEXT]] = add nuw nsw i32 [[INNER_IV]], 1 ; CHECK-NEXT: [[INVAR_ADD:%.*]] = add i32 [[INVAR]], 407 -; CHECK-NEXT: [[INNER_CMP:%.*]] = icmp ult i32 [[INNER_IV_NEXT]], [[INVAR_ADD]] +; CHECK-NEXT: [[INNER_CMP:%.*]] = icmp samesign ult i32 [[INNER_IV_NEXT]], [[INVAR_ADD]] ; CHECK-NEXT: br i1 [[INNER_CMP]], label [[INNER]], label [[INNER_EXIT:%.*]] ; CHECK: inner.exit: ; CHECK-NEXT: [[INVAR_LCSSA:%.*]] = phi i32 [ [[INVAR]], [[INNER]] ]