Skip to content

Commit 52d2b58

Browse files
authored
[IndVarSimplify] Set samesign when converting signed comparison to unsigned comparison in eliminateIVComparison. (#138215)
1 parent ace189b commit 52d2b58

16 files changed

+28
-27
lines changed

llvm/lib/Transforms/Utils/SimplifyIndVar.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@ void SimplifyIndvar::eliminateIVComparison(ICmpInst *ICmp,
288288
LLVM_DEBUG(dbgs() << "INDVARS: Turn to unsigned comparison: " << *ICmp
289289
<< '\n');
290290
ICmp->setPredicate(ICmpInst::getUnsignedPredicate(OriginalPred));
291+
ICmp->setSameSign();
291292
} else
292293
return;
293294

llvm/test/Analysis/ScalarEvolution/guards.ll

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ define void @test_1(ptr %cond_buf, ptr %len_buf) {
2323
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_INC:%.*]], [[LOOP]] ]
2424
; CHECK-NEXT: [[IV_INC]] = add nsw i32 [[IV]], 1
2525
; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 true) [ "deopt"() ]
26-
; CHECK-NEXT: [[IV_INC_CMP:%.*]] = icmp ult i32 [[IV_INC]], [[LEN]]
26+
; CHECK-NEXT: [[IV_INC_CMP:%.*]] = icmp samesign ult i32 [[IV_INC]], [[LEN]]
2727
; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[IV_INC_CMP]]) [ "deopt"() ]
2828
; CHECK-NEXT: [[BECOND:%.*]] = load volatile i1, ptr [[COND_BUF]], align 1
2929
; CHECK-NEXT: br i1 [[BECOND]], label [[LOOP]], label [[LEAVE:%.*]]
@@ -57,14 +57,14 @@ define void @test_2(i32 %n, ptr %len_buf) {
5757
; CHECK-SAME: (i32 [[N:%.*]], ptr [[LEN_BUF:%.*]]) {
5858
; CHECK-NEXT: entry:
5959
; CHECK-NEXT: [[LEN:%.*]] = load i32, ptr [[LEN_BUF]], align 4, !range [[RNG1:![0-9]+]]
60-
; CHECK-NEXT: [[TMP0:%.*]] = zext i32 [[LEN]] to i64
60+
; CHECK-NEXT: [[TMP0:%.*]] = sext i32 [[LEN]] to i64
6161
; CHECK-NEXT: [[TMP1:%.*]] = zext i32 [[N]] to i64
6262
; CHECK-NEXT: br label [[LOOP:%.*]]
6363
; CHECK: loop:
6464
; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[INDVARS_IV_NEXT:%.*]], [[LOOP]] ], [ 0, [[ENTRY:%.*]] ]
6565
; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
6666
; CHECK-NEXT: call void @use(i64 [[INDVARS_IV]])
67-
; CHECK-NEXT: [[IV_INC_CMP:%.*]] = icmp ult i64 [[INDVARS_IV_NEXT]], [[TMP0]]
67+
; CHECK-NEXT: [[IV_INC_CMP:%.*]] = icmp samesign ult i64 [[INDVARS_IV_NEXT]], [[TMP0]]
6868
; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[IV_INC_CMP]]) [ "deopt"() ]
6969
; CHECK-NEXT: [[BECOND:%.*]] = icmp ne i64 [[INDVARS_IV]], [[TMP1]]
7070
; CHECK-NEXT: br i1 [[BECOND]], label [[LOOP]], label [[LEAVE:%.*]]

llvm/test/Transforms/IndVarSimplify/canonicalize-cmp.ll

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ define i32 @test_01(i32 %a, i32 %b, ptr %p) {
1212
; CHECK-NEXT: br label [[LOOP_ENTRY:%.*]]
1313
; CHECK: loop.entry:
1414
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_BE:%.*]] ]
15-
; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i32 [[IV]], 100
15+
; CHECK-NEXT: [[CMP1:%.*]] = icmp samesign ult i32 [[IV]], 100
1616
; CHECK-NEXT: br i1 [[CMP1]], label [[B1:%.*]], label [[B2:%.*]]
1717
; CHECK: b1:
1818
; CHECK-NEXT: store i32 [[IV]], ptr [[P:%.*]], align 4
@@ -80,7 +80,7 @@ define i32 @test_02(i32 %a, i32 %b, ptr %p) {
8080
; CHECK-NEXT: br label [[LOOP_ENTRY:%.*]]
8181
; CHECK: loop.entry:
8282
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_BE:%.*]] ]
83-
; CHECK-NEXT: [[CMP1:%.*]] = icmp ugt i32 100, [[IV]]
83+
; CHECK-NEXT: [[CMP1:%.*]] = icmp samesign ugt i32 100, [[IV]]
8484
; CHECK-NEXT: br i1 [[CMP1]], label [[B1:%.*]], label [[B2:%.*]]
8585
; CHECK: b1:
8686
; CHECK-NEXT: store i32 [[IV]], ptr [[P:%.*]], align 4

llvm/test/Transforms/IndVarSimplify/cycled_phis.ll

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ define i32 @trivial.case(ptr %len.ptr) {
1616
; CHECK-NEXT: br label [[LOOP:%.*]]
1717
; CHECK: loop:
1818
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[PREHEADER]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ]
19-
; CHECK-NEXT: [[SIGNED_CMP:%.*]] = icmp ult i32 [[IV]], [[LEN]]
19+
; CHECK-NEXT: [[SIGNED_CMP:%.*]] = icmp samesign ult i32 [[IV]], [[LEN]]
2020
; CHECK-NEXT: br i1 [[SIGNED_CMP]], label [[SIGNED_PASSED:%.*]], label [[FAILED_SIGNED:%.*]]
2121
; CHECK: signed.passed:
2222
; 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) {
247247
; CHECK-NEXT: br label [[LOOP:%.*]]
248248
; CHECK: loop:
249249
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ [[SIBLING_IV_NEXT_TRUNC]], [[PREHEADER]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ]
250-
; CHECK-NEXT: [[SIGNED_CMP:%.*]] = icmp ult i32 [[IV]], [[LEN]]
250+
; CHECK-NEXT: [[SIGNED_CMP:%.*]] = icmp samesign ult i32 [[IV]], [[LEN]]
251251
; CHECK-NEXT: br i1 [[SIGNED_CMP]], label [[SIGNED_PASSED:%.*]], label [[FAILED_SIGNED:%.*]]
252252
; CHECK: signed.passed:
253253
; CHECK-NEXT: br i1 true, label [[BACKEDGE]], label [[FAILED_UNSIGNED:%.*]]

llvm/test/Transforms/IndVarSimplify/floating-point-iv.ll

+7-7
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ define void @test1() nounwind {
1010
; CHECK-NEXT: [[INDVAR_CONV:%.*]] = sitofp i32 [[IV_INT]] to double
1111
; CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @foo(double [[INDVAR_CONV]]) #[[ATTR0:[0-9]+]]
1212
; CHECK-NEXT: [[DOTINT]] = add nuw nsw i32 [[IV_INT]], 1
13-
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[DOTINT]], 10000
13+
; CHECK-NEXT: [[TMP1:%.*]] = icmp samesign ult i32 [[DOTINT]], 10000
1414
; CHECK-NEXT: br i1 [[TMP1]], label [[BB]], label [[RETURN:%.*]]
1515
; CHECK: return:
1616
; CHECK-NEXT: ret void
@@ -145,7 +145,7 @@ define double @test_max_be() {
145145
; CHECK-NEXT: [[INDVAR_CONV:%.*]] = sitofp i32 [[TMP11_INT]] to double
146146
; CHECK-NEXT: [[TMP12]] = fadd double [[TMP10]], [[INDVAR_CONV]]
147147
; CHECK-NEXT: [[TMP13_INT]] = add nuw nsw i32 [[TMP11_INT]], 1
148-
; CHECK-NEXT: [[TMP14:%.*]] = icmp ult i32 [[TMP13_INT]], 99999
148+
; CHECK-NEXT: [[TMP14:%.*]] = icmp samesign ult i32 [[TMP13_INT]], 99999
149149
; CHECK-NEXT: br i1 [[TMP14]], label [[BB22]], label [[BB6:%.*]]
150150
; CHECK: bb22:
151151
; CHECK-NEXT: br i1 true, label [[BB8]], label [[BB6]]
@@ -184,7 +184,7 @@ define float @test_max_be2() {
184184
; CHECK-NEXT: [[INDVAR_CONV:%.*]] = sitofp i32 [[TMP11_INT]] to float
185185
; CHECK-NEXT: [[TMP12]] = fadd float [[TMP10]], [[INDVAR_CONV]]
186186
; CHECK-NEXT: [[TMP13_INT]] = add nuw nsw i32 [[TMP11_INT]], 1
187-
; CHECK-NEXT: [[TMP14:%.*]] = icmp ult i32 [[TMP13_INT]], 99999
187+
; CHECK-NEXT: [[TMP14:%.*]] = icmp samesign ult i32 [[TMP13_INT]], 99999
188188
; CHECK-NEXT: br i1 [[TMP14]], label [[BB22]], label [[BB6:%.*]]
189189
; CHECK: bb22:
190190
; CHECK-NEXT: br i1 true, label [[BB8]], label [[BB6]]
@@ -224,7 +224,7 @@ define float @test_max_be3() {
224224
; CHECK-NEXT: [[INDVAR_CONV:%.*]] = sitofp i32 [[TMP11_INT]] to float
225225
; CHECK-NEXT: [[TMP12]] = fadd float [[TMP10]], [[INDVAR_CONV]]
226226
; CHECK-NEXT: [[TMP13_INT]] = add nuw nsw i32 [[TMP11_INT]], 1
227-
; CHECK-NEXT: [[TMP14:%.*]] = icmp ult i32 [[TMP13_INT]], 99999
227+
; CHECK-NEXT: [[TMP14:%.*]] = icmp samesign ult i32 [[TMP13_INT]], 99999
228228
; CHECK-NEXT: br i1 [[TMP14]], label [[BB22]], label [[BB6:%.*]]
229229
; CHECK: bb22:
230230
; CHECK-NEXT: br i1 true, label [[BB8]], label [[BB6]]
@@ -263,7 +263,7 @@ define void @fcmp1() nounwind {
263263
; CHECK-NEXT: br label [[BB:%.*]]
264264
; CHECK: bb:
265265
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ]
266-
; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i64 [[IV]], 20000
266+
; CHECK-NEXT: [[CMP1:%.*]] = icmp samesign ult i64 [[IV]], 20000
267267
; CHECK-NEXT: br i1 [[CMP1]], label [[BACKEDGE]], label [[RETURN:%.*]]
268268
; CHECK: backedge:
269269
; CHECK-NEXT: [[IV_FP:%.*]] = sitofp i64 [[IV]] to double
@@ -299,7 +299,7 @@ define void @fcmp2() nounwind {
299299
; CHECK-NEXT: br label [[BB:%.*]]
300300
; CHECK: bb:
301301
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ]
302-
; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i64 [[IV]], 2000
302+
; CHECK-NEXT: [[CMP1:%.*]] = icmp samesign ult i64 [[IV]], 2000
303303
; CHECK-NEXT: br i1 [[CMP1]], label [[BACKEDGE]], label [[RETURN:%.*]]
304304
; CHECK: backedge:
305305
; 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)
389389
; CHECK-NEXT: call void @use.i16(i16 [[FLOAT_IV_INT_TRUNC2]])
390390
; CHECK-NEXT: call void @use.i64(i64 [[FLOAT_IV_INT_ZEXT]])
391391
; CHECK-NEXT: [[FLOAT_IV_NEXT_INT]] = add nsw i32 [[FLOAT_IV_INT]], -1
392-
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[FLOAT_IV_NEXT_INT]], 0
392+
; CHECK-NEXT: [[CMP:%.*]] = icmp samesign ugt i32 [[FLOAT_IV_NEXT_INT]], 0
393393
; CHECK-NEXT: br i1 [[CMP]], label [[LOOP]], label [[EXIT:%.*]]
394394
; CHECK: exit:
395395
; CHECK-NEXT: ret void

llvm/test/Transforms/IndVarSimplify/floating-point-small-iv.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ define void @sitofp_fptoui_range() {
261261
; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [16777219 x i32], ptr @array, i64 0, i64 [[IDXPROM]]
262262
; CHECK-NEXT: store i32 [[IV_INT]], ptr [[ARRAYIDX]], align 4
263263
; CHECK-NEXT: [[DEC_INT]] = add nsw i32 [[IV_INT]], -1
264-
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[DEC_INT]], 0
264+
; CHECK-NEXT: [[CMP:%.*]] = icmp samesign ugt i32 [[DEC_INT]], 0
265265
; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY]], label [[CLEANUP:%.*]]
266266
; CHECK: cleanup:
267267
; CHECK-NEXT: ret void

llvm/test/Transforms/IndVarSimplify/implied-via-addition.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ define void @test_02(i8 %t) {
5353
; CHECK-NEXT: [[IDX:%.*]] = phi ptr [ [[T_PTR]], %[[ENTRY]] ], [ [[SNEXT:%.*]], %[[LOOP]] ]
5454
; CHECK-NEXT: [[SNEXT]] = getelementptr inbounds i8, ptr [[IDX]], i64 1
5555
; CHECK-NEXT: call void @use(i1 true)
56-
; CHECK-NEXT: [[BE:%.*]] = icmp ult ptr [[SNEXT]], [[P_42]]
56+
; CHECK-NEXT: [[BE:%.*]] = icmp samesign ult ptr [[SNEXT]], [[P_42]]
5757
; CHECK-NEXT: br i1 [[BE]], label %[[LOOP]], label %[[EXIT:.*]]
5858
; CHECK: [[EXIT]]:
5959
; CHECK-NEXT: ret void

llvm/test/Transforms/IndVarSimplify/iv-sext.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ define void @t(ptr %pval1, ptr %peakWeight, ptr %nrgReducePeakrate, i32 %bandEdg
2626
; CHECK-NEXT: [[HIPART_119:%.*]] = phi i32 [ [[HIPART_0_LCSSA:%.*]], [[BB8]] ], [ 0, [[BB_NPH22]] ]
2727
; CHECK-NEXT: [[LOPART_118:%.*]] = phi i32 [ [[LOPART_0_LCSSA:%.*]], [[BB8]] ], [ 0, [[BB_NPH22]] ]
2828
; CHECK-NEXT: [[PEAKCOUNT_117:%.*]] = phi float [ [[PEAKCOUNT_2_LCSSA:%.*]], [[BB8]] ], [ [[VAL]], [[BB_NPH22]] ]
29-
; CHECK-NEXT: [[VAL4:%.*]] = icmp ugt i64 [[INDVARS_IV1]], 0
29+
; CHECK-NEXT: [[VAL4:%.*]] = icmp samesign ugt i64 [[INDVARS_IV1]], 0
3030
; CHECK-NEXT: br i1 [[VAL4]], label [[BB1:%.*]], label [[BB3_PREHEADER:%.*]]
3131
; CHECK: bb1:
3232
; CHECK-NEXT: [[TMP1:%.*]] = add nsw i64 [[INDVARS_IV1]], -1

llvm/test/Transforms/IndVarSimplify/lftr.ll

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ define i32 @pre_to_post_sub() {
4343
; CHECK-NEXT: [[I:%.*]] = phi i32 [ 1000, [[ENTRY:%.*]] ], [ [[I_NEXT:%.*]], [[LOOP]] ]
4444
; CHECK-NEXT: [[I_NEXT]] = sub nsw i32 [[I]], 1
4545
; CHECK-NEXT: store i32 [[I]], ptr @A, align 4
46-
; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[I]], 0
46+
; CHECK-NEXT: [[C:%.*]] = icmp samesign ugt i32 [[I]], 0
4747
; CHECK-NEXT: br i1 [[C]], label [[LOOP]], label [[LOOPEXIT:%.*]]
4848
; CHECK: loopexit:
4949
; CHECK-NEXT: ret i32 0
@@ -270,7 +270,7 @@ define void @use_before_branch() {
270270
; CHECK-NEXT: br label [[LOOPENTRY_0:%.*]]
271271
; CHECK: loopentry.0:
272272
; CHECK-NEXT: [[MB_Y_0:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[T152:%.*]], [[LOOPENTRY_1:%.*]] ]
273-
; CHECK-NEXT: [[T14:%.*]] = icmp ule i32 [[MB_Y_0]], 3
273+
; CHECK-NEXT: [[T14:%.*]] = icmp samesign ule i32 [[MB_Y_0]], 3
274274
; CHECK-NEXT: br i1 [[T14]], label [[LOOPENTRY_1]], label [[LOOPEXIT_0:%.*]]
275275
; CHECK: loopentry.1:
276276
; CHECK-NEXT: [[T152]] = add nuw nsw i32 [[MB_Y_0]], 2

llvm/test/Transforms/IndVarSimplify/pr102597.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ define void @test() {
1515
; CHECK-NEXT: br label %[[LOOP_LATCH]]
1616
; CHECK: [[LOOP_LATCH]]:
1717
; CHECK-NEXT: [[IV_DEC]] = add nsw i128 [[IV]], -1
18-
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i128 [[IV]], 0
18+
; CHECK-NEXT: [[CMP:%.*]] = icmp samesign ugt i128 [[IV]], 0
1919
; CHECK-NEXT: br i1 [[CMP]], label %[[LOOP]], label %[[EXIT:.*]]
2020
; CHECK: [[EXIT]]:
2121
; CHECK-NEXT: ret void

llvm/test/Transforms/IndVarSimplify/pr126012.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ define i32 @test() {
1515
; CHECK-NEXT: [[COND1:%.*]] = icmp eq i32 [[INDVAR3]], 0
1616
; CHECK-NEXT: br i1 [[COND1]], label %[[FOR_INC]], label %[[FOR_END:.*]]
1717
; CHECK: [[FOR_END]]:
18-
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[INDVAR2]], 0
18+
; CHECK-NEXT: [[CMP:%.*]] = icmp samesign ugt i32 [[INDVAR2]], 0
1919
; CHECK-NEXT: [[EXT:%.*]] = zext i1 [[CMP]] to i32
2020
; CHECK-NEXT: br label %[[FOR_INC]]
2121
; CHECK: [[FOR_INC]]:

llvm/test/Transforms/IndVarSimplify/pr66986.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ define i32 @test(i1 %c, i32 %arg1, i32 %arg2) {
2020
; CHECK: loop2:
2121
; CHECK-NEXT: [[PHI6:%.*]] = phi i64 [ [[ADD7:%.*]], [[LOOP2]] ], [ 0, [[IF]] ]
2222
; CHECK-NEXT: [[ADD7]] = add nuw nsw i64 [[PHI6]], 1
23-
; CHECK-NEXT: [[ICMP:%.*]] = icmp ult i64 [[PHI6]], [[ZEXT]]
23+
; CHECK-NEXT: [[ICMP:%.*]] = icmp samesign ult i64 [[PHI6]], [[ZEXT]]
2424
; CHECK-NEXT: br i1 [[ICMP]], label [[LOOP2]], label [[LOOP_LATCH_LOOPEXIT:%.*]]
2525
; CHECK: loop.latch.loopexit:
2626
; CHECK-NEXT: br label [[LOOP_LATCH]]

llvm/test/Transforms/IndVarSimplify/preserving-debugloc.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ define void @test1() !dbg !5 {
1111
; CHECK: [[IV_INT:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[DOTINT:%.*]], [[BB]] ], !dbg ![[DBG1:[0-9]+]]
1212
; CHECK: [[INDVAR_CONV:%.*]] = sitofp i32 [[IV_INT]] to double, !dbg ![[DBG1]]
1313
; CHECK: [[DOTINT]] = add nuw nsw i32 [[IV_INT]], 1, !dbg ![[DBG2:[0-9]+]]
14-
; CHECK: [[TMP1:%.*]] = icmp ult i32 [[DOTINT]], 10000, !dbg ![[DBG3:[0-9]+]]
14+
; CHECK: [[TMP1:%.*]] = icmp samesign ult i32 [[DOTINT]], 10000, !dbg ![[DBG3:[0-9]+]]
1515
; CHECK: ![[DBG1]] = !DILocation(line: 2
1616
; CHECK: ![[DBG2]] = !DILocation(line: 4
1717
; CHECK: ![[DBG3]] = !DILocation(line: 5

llvm/test/Transforms/IndVarSimplify/scev-invalidation.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ define i8 @l(i32 %inc, i1 %tobool.not.i) {
8080
; CHECK: inner:
8181
; CHECK-NEXT: [[C_05_I:%.*]] = phi i32 [ [[INC_I:%.*]], [[INNER]] ], [ 0, [[OUTER_HEADER]] ]
8282
; CHECK-NEXT: [[INC_I]] = add nuw nsw i32 [[C_05_I]], 1
83-
; CHECK-NEXT: [[CMP_I:%.*]] = icmp ugt i32 [[C_05_I]], 0
83+
; CHECK-NEXT: [[CMP_I:%.*]] = icmp samesign ugt i32 [[C_05_I]], 0
8484
; CHECK-NEXT: [[OR_COND_I:%.*]] = select i1 [[CMP_I]], i1 true, i1 [[TOBOOL_NOT_I:%.*]]
8585
; CHECK-NEXT: br i1 [[OR_COND_I]], label [[OUTER_LATCH:%.*]], label [[INNER]]
8686
; CHECK: outer.latch:

llvm/test/Transforms/IndVarSimplify/shift-range-checks.ll

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ define void @test_01(ptr %p, i32 %shift) {
1212
; CHECK-NEXT: br label [[LOOP:%.*]]
1313
; CHECK: loop:
1414
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ]
15-
; CHECK-NEXT: [[LESS_THAN_SHIFTED:%.*]] = icmp ult i32 [[IV]], [[X_SHIFTED]]
15+
; CHECK-NEXT: [[LESS_THAN_SHIFTED:%.*]] = icmp samesign ult i32 [[IV]], [[X_SHIFTED]]
1616
; CHECK-NEXT: br i1 [[LESS_THAN_SHIFTED]], label [[GUARDED:%.*]], label [[FAILURE:%.*]]
1717
; CHECK: guarded:
1818
; CHECK-NEXT: br i1 true, label [[BACKEDGE]], label [[NEVER_HAPPENS:%.*]]
@@ -68,7 +68,7 @@ define void @test_02(ptr %p, i32 %shift) {
6868
; CHECK-NEXT: br label [[LOOP:%.*]]
6969
; CHECK: loop:
7070
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ]
71-
; CHECK-NEXT: [[LESS_THAN_SHIFTED:%.*]] = icmp ugt i32 [[X_SHIFTED]], [[IV]]
71+
; CHECK-NEXT: [[LESS_THAN_SHIFTED:%.*]] = icmp samesign ugt i32 [[X_SHIFTED]], [[IV]]
7272
; CHECK-NEXT: br i1 [[LESS_THAN_SHIFTED]], label [[GUARDED:%.*]], label [[FAILURE:%.*]]
7373
; CHECK: guarded:
7474
; CHECK-NEXT: br i1 true, label [[BACKEDGE]], label [[NEVER_HAPPENS:%.*]]

llvm/test/Transforms/LoopDeletion/invalidate-scev-after-hoisting.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ define void @test_pr57837() {
2121
; CHECK-NEXT: call void @use(i32 [[ADD_1]])
2222
; CHECK-NEXT: [[INNER_IV_NEXT]] = add nuw nsw i32 [[INNER_IV]], 1
2323
; CHECK-NEXT: [[INVAR_ADD:%.*]] = add i32 [[INVAR]], 407
24-
; CHECK-NEXT: [[INNER_CMP:%.*]] = icmp ult i32 [[INNER_IV_NEXT]], [[INVAR_ADD]]
24+
; CHECK-NEXT: [[INNER_CMP:%.*]] = icmp samesign ult i32 [[INNER_IV_NEXT]], [[INVAR_ADD]]
2525
; CHECK-NEXT: br i1 [[INNER_CMP]], label [[INNER]], label [[INNER_EXIT:%.*]]
2626
; CHECK: inner.exit:
2727
; CHECK-NEXT: [[INVAR_LCSSA:%.*]] = phi i32 [ [[INVAR]], [[INNER]] ]

0 commit comments

Comments
 (0)