Skip to content

Commit 5dfb2db

Browse files
committed
[LoopInterchange] Fix tests with loops that have BTC=0. NFC.
Precommit test fixups for llvm#167113
1 parent 6ef3218 commit 5dfb2db

File tree

6 files changed

+76
-68
lines changed

6 files changed

+76
-68
lines changed

llvm/test/Transforms/LoopInterchange/interchanged-loop-nest-4.ll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ for.body10.i.i.i: ; preds = %for.body10.i.i.i, %
3636
%arrayidx.i.i.i = getelementptr [6 x ptr], ptr @g_78, i16 0, i16 %storemerge56.i.i.i
3737
store ptr @g_75, ptr %arrayidx.i.i.i, align 1
3838
%sub.i.i.i = add nsw i16 %storemerge56.i.i.i, -1
39-
br i1 true, label %for.inc14.i.i.i, label %for.body10.i.i.i
39+
%cmp = icmp sgt i16 %sub.i.i.i, 0
40+
br i1 %cmp, label %for.body10.i.i.i, label %for.inc14.i.i.i
4041

4142
for.inc14.i.i.i: ; preds = %for.body10.i.i.i
4243
%add15.i.i.i = add nuw nsw i16 %l_105.18.i.i.i, 1

llvm/test/Transforms/LoopInterchange/lcssa-phi-outer-latch.ll

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,13 @@ define i16 @main(ptr %a) {
3131
; CHECK-NEXT: br label %[[INNER_LATCH:.*]]
3232
; CHECK: [[INNER_LATCH]]:
3333
; CHECK-NEXT: [[J_NEXT:%.*]] = add i16 [[J]], 1
34+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i16 [[J]], 42
3435
; CHECK-NEXT: br label %[[OUTER_BODY:.*]]
3536
; CHECK: [[INNER_LATCH_SPLIT]]:
3637
; CHECK-NEXT: [[NEW_COND_LCSSA:%.*]] = phi i16 [ [[COND]], %[[OUTER_LATCH]] ]
3738
; CHECK-NEXT: [[TMP1]] = add i16 [[J]], 1
38-
; CHECK-NEXT: br i1 true, label %[[EXIT:.*]], label %[[INNER_HEADER]]
39+
; CHECK-NEXT: [[TMP2:%.*]] = icmp slt i16 [[J]], 42
40+
; CHECK-NEXT: br i1 [[TMP2]], label %[[INNER_HEADER]], label %[[EXIT:.*]]
3941
; CHECK: [[OUTER_BODY]]:
4042
; CHECK-NEXT: br label %[[OUTER_LATCH]]
4143
; CHECK: [[OUTER_LATCH]]:
@@ -62,7 +64,8 @@ inner.header:
6264

6365
inner.latch:
6466
%j.next = add i16 %j, 1
65-
br i1 true, label %outer.body, label %inner.header
67+
%cmp = icmp slt i16 %j, 42
68+
br i1 %cmp, label %inner.header, label %outer.body
6669

6770
outer.body:
6871
%new.cond.lcssa = phi i16 [ %cond, %inner.latch ]

llvm/test/Transforms/LoopInterchange/pr43176-move-to-new-latch.ll

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -21,33 +21,34 @@
2121

2222
define void @test1() {
2323
entry:
24-
br label %for.body
24+
br label %outer.header
2525

26-
for.body: ; preds = %for.inc3, %entry
27-
%inc41 = phi i32 [ %inc4, %for.inc3 ], [ undef, %entry ]
28-
br label %for.body2
26+
outer.header:
27+
%i = phi i32 [ %i.next, %outer.latch ], [ 0, %entry ]
28+
br label %inner.header
2929

30-
for.body2: ; preds = %for.inc, %for.body
31-
%lsr.iv = phi i32 [ %lsr.iv.next, %for.inc ], [ 1, %for.body ]
32-
br label %for.inc
30+
inner.header:
31+
%j = phi i32 [ %j.next, %inner.latch ], [ 1, %outer.header ]
32+
br label %inner.latch
3333

34-
for.inc: ; preds = %for.body2
35-
%idxprom = sext i32 %inc41 to i64
34+
inner.latch:
35+
%idxprom = sext i32 %i to i64
3636
%arrayidx = getelementptr inbounds [5 x i32], ptr @b, i64 0, i64 %idxprom
3737
%0 = load i32, ptr %arrayidx, align 4
3838
store i32 undef, ptr %arrayidx, align 4
39-
%cmp = icmp slt i32 %lsr.iv, 4
40-
%lsr.iv.next = add nuw nsw i32 %lsr.iv, 1
41-
br i1 %cmp, label %for.body2, label %for.cond1.for.end_crit_edge
39+
%cmp = icmp slt i32 %j, 4
40+
%j.next = add nuw nsw i32 %j, 1
41+
br i1 %cmp, label %inner.header, label %outer.body
4242

43-
for.cond1.for.end_crit_edge: ; preds = %for.inc
44-
br label %for.inc3
43+
outer.body:
44+
br label %outer.latch
4545

46-
for.inc3: ; preds = %for.cond1.for.end_crit_edge
47-
%inc4 = add nsw i32 %inc41, 1
48-
br i1 false, label %for.body, label %for.cond.for.end5_crit_edge
46+
outer.latch:
47+
%i.next = add nsw i32 %i, 1
48+
%cmp2 = icmp slt i32 %i, 4
49+
br i1 %cmp2, label %outer.header, label %exit
4950

50-
for.cond.for.end5_crit_edge: ; preds = %for.inc3
51+
exit:
5152
ret void
5253
}
5354

@@ -61,33 +62,34 @@ for.cond.for.end5_crit_edge: ; preds = %for.inc3
6162

6263
define void @test2() {
6364
entry:
64-
br label %for.body
65+
br label %outer.header
6566

66-
for.body: ; preds = %for.inc3, %entry
67-
%inc41 = phi i32 [ %inc4, %for.inc3 ], [ undef, %entry ]
68-
br label %for.body2
67+
outer.header:
68+
%i = phi i32 [ %i.next, %outer.latch ], [ 0, %entry ]
69+
br label %inner.header
6970

70-
for.body2: ; preds = %for.inc, %for.body
71-
%lsr.iv = phi i32 [ %lsr.iv.next, %for.inc ], [ 1, %for.body ]
72-
br label %for.inc
71+
inner.header:
72+
%lsr.iv = phi i32 [ %lsr.iv.next, %inner.latch ], [ 1, %outer.header ]
73+
br label %inner.latch
7374

74-
for.inc: ; preds = %for.body2
75-
%idxprom = sext i32 %inc41 to i64
75+
inner.latch:
76+
%idxprom = sext i32 %i to i64
7677
%arrayidx = getelementptr inbounds [5 x i32], ptr @b, i64 0, i64 %idxprom
7778
%0 = load i32, ptr %arrayidx, align 4
7879
%cmp = icmp slt i32 %lsr.iv, 4
7980
%cmp.zext = zext i1 %cmp to i32
8081
store i32 %cmp.zext, ptr %arrayidx, align 4
8182
%lsr.iv.next = add nuw nsw i32 %lsr.iv, 1
82-
br i1 %cmp, label %for.body2, label %for.cond1.for.end_crit_edge
83+
br i1 %cmp, label %inner.header, label %outer.body
8384

84-
for.cond1.for.end_crit_edge: ; preds = %for.inc
85-
br label %for.inc3
85+
outer.body:
86+
br label %outer.latch
8687

87-
for.inc3: ; preds = %for.cond1.for.end_crit_edge
88-
%inc4 = add nsw i32 %inc41, 1
89-
br i1 false, label %for.body, label %for.cond.for.end5_crit_edge
88+
outer.latch:
89+
%i.next = add nsw i32 %i, 1
90+
%cmp2 = icmp slt i32 %i, 4
91+
br i1 %cmp2, label %outer.header, label %exit
9092

91-
for.cond.for.end5_crit_edge: ; preds = %for.inc3
93+
exit:
9294
ret void
9395
}

llvm/test/Transforms/LoopInterchange/pr43326.ll

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,58 +25,58 @@ define void @pr43326() {
2525
entry:
2626
%0 = load i32, ptr @a
2727
%tobool.not2 = icmp eq i32 %0, 0
28-
br i1 %tobool.not2, label %for.end14, label %for.body.lr.ph
28+
br i1 %tobool.not2, label %for.end14, label %outer.preheader
2929

30-
for.body.lr.ph: ; preds = %entry
30+
outer.preheader: ; preds = %entry
3131
%d.promoted = load i32, ptr @d
3232
%a.promoted = load i32, ptr @a
33-
br label %for.body
33+
br label %outer.header
3434

35-
for.body: ; preds = %for.body.lr.ph, %for.inc12
36-
%inc1312 = phi i32 [ %a.promoted, %for.body.lr.ph ], [ %inc13, %for.inc12 ]
37-
%xor.lcssa.lcssa11 = phi i32 [ %d.promoted, %for.body.lr.ph ], [ %xor.lcssa.lcssa, %for.inc12 ]
38-
br label %for.body3
35+
outer.header: ; preds = %outer.preheader, %for.inc12
36+
%inc1312 = phi i32 [ %a.promoted, %outer.preheader ], [ %inc13, %for.inc12 ]
37+
%xor.lcssa.lcssa11 = phi i32 [ %d.promoted, %outer.preheader ], [ %xor.lcssa.lcssa, %for.inc12 ]
38+
br label %inner1.header
3939

40-
for.body3: ; preds = %for.body, %for.inc10
41-
%xor.lcssa9 = phi i32 [ %xor.lcssa.lcssa11, %for.body ], [ %xor.lcssa, %for.inc10 ]
42-
%dec7 = phi i8 [ 0, %for.body ], [ %dec, %for.inc10 ]
43-
%idxprom8 = sext i8 %dec7 to i64
44-
br label %for.body7
40+
inner1.header: ; preds = %outer.header, %for.inc10
41+
%xor.lcssa9 = phi i32 [ %xor.lcssa.lcssa11, %outer.header ], [ %xor.lcssa, %for.inc10 ]
42+
%j = phi i8 [ 0, %outer.header ], [ %j.next, %for.inc10 ]
43+
%idxprom8 = sext i8 %j to i64
44+
br label %inner2.header
4545

46-
for.body7: ; preds = %for.body3, %for.inc
47-
%xor5 = phi i32 [ %xor.lcssa9, %for.body3 ], [ %xor, %for.inc ]
48-
%inc4 = phi i32 [ 0, %for.body3 ], [ %inc, %for.inc ]
49-
%idxprom = sext i32 %inc4 to i64
46+
inner2.header: ; preds = %inner1.header, %for.inc
47+
%xor5 = phi i32 [ %xor.lcssa9, %inner1.header ], [ %xor, %for.inc ]
48+
%k = phi i32 [ 0, %inner1.header ], [ %k.next, %for.inc ]
49+
%idxprom = sext i32 %k to i64
5050
%arrayidx9 = getelementptr inbounds [1 x [1 x i32]], ptr @e, i64 0, i64 %idxprom, i64 %idxprom8
5151
%1 = load i32, ptr %arrayidx9
5252
%xor = xor i32 %xor5, %1
5353
br label %for.inc
5454

55-
for.inc: ; preds = %for.body7
56-
%inc = add nsw i32 %inc4, 1
57-
%cmp5 = icmp slt i32 %inc, 1
58-
br i1 %cmp5, label %for.body7, label %for.end
55+
for.inc: ; preds = %inner2.header
56+
%k.next = add nsw i32 %k, 1
57+
%cmp5 = icmp slt i32 %k.next, 42
58+
br i1 %cmp5, label %inner2.header, label %for.end
5959

6060
for.end: ; preds = %for.inc
6161
%xor.lcssa = phi i32 [ %xor, %for.inc ]
62-
%inc.lcssa = phi i32 [ %inc, %for.inc ]
62+
%inc.lcssa = phi i32 [ %k.next, %for.inc ]
6363
br label %for.inc10
6464

6565
for.inc10: ; preds = %for.end
66-
%dec = add i8 %dec7, -1
67-
%cmp = icmp sgt i8 %dec, -1
68-
br i1 %cmp, label %for.body3, label %for.end11
66+
%j.next = add i8 %j, -1
67+
%cmp = icmp sgt i8 %j.next, -1
68+
br i1 %cmp, label %inner1.header, label %for.end11
6969

7070
for.end11: ; preds = %for.inc10
7171
%xor.lcssa.lcssa = phi i32 [ %xor.lcssa, %for.inc10 ]
72-
%dec.lcssa = phi i8 [ %dec, %for.inc10 ]
72+
%dec.lcssa = phi i8 [ %j.next, %for.inc10 ]
7373
%inc.lcssa.lcssa = phi i32 [ %inc.lcssa, %for.inc10 ]
7474
br label %for.inc12
7575

7676
for.inc12: ; preds = %for.end11
7777
%inc13 = add nsw i32 %inc1312, 1
7878
%tobool.not = icmp eq i32 %inc13, 0
79-
br i1 %tobool.not, label %for.cond.for.end14_crit_edge, label %for.body
79+
br i1 %tobool.not, label %for.cond.for.end14_crit_edge, label %outer.header
8080

8181
for.cond.for.end14_crit_edge: ; preds = %for.inc12
8282
%inc13.lcssa = phi i32 [ %inc13, %for.inc12 ]

llvm/test/Transforms/LoopInterchange/pr57148.ll

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ define void @test2() {
126126
; CHECK-NEXT: br i1 true, label [[MIDDLE_BLOCK80]], label [[VECTOR_BODY85]]
127127
; CHECK: middle.block80:
128128
; CHECK-NEXT: [[INC66]] = add nuw nsw i16 [[J_165]], 1
129-
; CHECK-NEXT: br i1 true, label [[FOR_COND75_PREHEADER:%.*]], label [[FOR_COND37_PREHEADER]]
129+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i16 [[INC66]], 42
130+
; CHECK-NEXT: br i1 [[CMP]], label [[FOR_COND75_PREHEADER:%.*]], label [[FOR_COND37_PREHEADER]]
130131
; CHECK: for.inc68:
131132
; CHECK-NEXT: [[INC69]] = add nuw nsw i16 [[I_166]], 1
132133
; CHECK-NEXT: [[EXITCOND77_NOT:%.*]] = icmp eq i16 [[INC69]], 2
@@ -156,7 +157,8 @@ vector.body85: ; preds = %vector.body85, %for
156157

157158
middle.block80: ; preds = %vector.body85
158159
%inc66 = add nuw nsw i16 %j.165, 1
159-
br i1 true, label %for.inc68, label %for.cond37.preheader
160+
%cmp = icmp slt i16 %inc66, 42
161+
br i1 %cmp, label %for.inc68, label %for.cond37.preheader
160162

161163
for.inc68: ; preds = %middle.block80
162164
%inc69 = add nuw nsw i16 %i.166, 1

llvm/test/Transforms/LoopInterchange/reductions-across-inner-and-outer-loop.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -301,13 +301,13 @@ for.body3: ; preds = %for.body3, %outer.h
301301
%vB = load float, ptr %arrayidx6
302302
%float.inner.inc.inc = fadd fast float %float.inner.inc, %vB
303303
%iv.inner.next = add nuw nsw i64 %iv.inner, 1
304-
%exitcond = icmp eq i64 %iv.inner.next, 100
305-
br i1 %exitcond, label %outer.inc, label %for.body3
304+
%exitcond = icmp slt i64 %iv.inner.next, 100
305+
br i1 %exitcond, label %for.body3, label %outer.inc
306306

307307
outer.inc: ; preds = %for.body3
308308
%float.inner.lcssa = phi float [ %float.inner.inc.inc, %for.body3 ]
309309
%iv.outer.next = add nsw i64 %iv.outer, 1
310-
%cmp = icmp eq i64 %iv.outer.next, 100
310+
%cmp = icmp slt i64 %iv.outer.next, 100
311311
br i1 %cmp, label %outer.header, label %for.exit
312312

313313
for.exit: ; preds = %outer.inc

0 commit comments

Comments
 (0)