Skip to content

Commit d351384

Browse files
committed
Add simplified test
1 parent 1e95541 commit d351384

File tree

1 file changed

+28
-101
lines changed

1 file changed

+28
-101
lines changed

llvm/test/Transforms/LoopInterchange/no-dependence-info.ll

Lines changed: 28 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -2,124 +2,51 @@
22

33
target triple = "aarch64-unknown-linux-gnu"
44

5+
; CHECK-NOT: Computed dependence info, invoking the transform.
6+
57
; For the below test, backedge count cannot be computed.
68
; Computing backedge count requires only SCEV and should
79
; not require dependence info.
810
;
9-
; void foo(int *a, int *neg, int *pos) {
10-
; int p = 0, q = 0;
11-
; for (unsigned int i = 0; i < 32; ++i) {
12-
; for (unsigned int j = 0; j < 32; ++j) {
13-
; if (a[i] < 0){
14-
; neg[p++] = a[i];
15-
; }
16-
; else {
17-
; pos[q++] = a[i];
18-
; }
11+
; void bar(int m, int n) {
12+
; for (unsigned int i = 0; i < m; ++i) {
13+
; for (unsigned int j = 0; j < m; ++j) {
14+
; // dummy code
1915
; }
2016
; }
2117
;}
2218

23-
; CHECK-NOT: Computed dependence info, invoking the transform.
24-
25-
define dso_local void @_foo(ptr noundef %a, ptr noundef %neg, ptr noundef %pos) {
19+
define void @bar(i32 %m, i32 %n)
20+
{
2621
entry:
27-
%a.addr = alloca ptr, align 8
28-
%neg.addr = alloca ptr, align 8
29-
%pos.addr = alloca ptr, align 8
30-
%p = alloca i32, align 4
31-
%q = alloca i32, align 4
32-
%i = alloca i32, align 4
33-
%cleanup.dest.slot = alloca i32, align 4
34-
%j = alloca i32, align 4
35-
store ptr %a, ptr %a.addr, align 8
36-
store ptr %neg, ptr %neg.addr, align 8
37-
store ptr %pos, ptr %pos.addr, align 8
38-
store i32 0, ptr %p, align 4
39-
store i32 0, ptr %q, align 4
40-
store i32 0, ptr %i, align 4
41-
br label %for.cond
42-
43-
for.cond: ; preds = %for.inc16, %entry
44-
%0 = load i32, ptr %i, align 4
45-
%cmp = icmp slt i32 %0, 32
46-
br i1 %cmp, label %for.body, label %for.cond.cleanup
47-
48-
for.cond.cleanup: ; preds = %for.cond
49-
store i32 2, ptr %cleanup.dest.slot, align 4
50-
br label %for.end18
51-
52-
for.body: ; preds = %for.cond
53-
store i32 0, ptr %j, align 4
54-
br label %for.cond1
55-
56-
for.cond1: ; preds = %for.inc, %for.body
57-
%1 = load i32, ptr %j, align 4
58-
%cmp2 = icmp slt i32 %1, 32
59-
br i1 %cmp2, label %for.body4, label %for.cond.cleanup3
22+
br label %outer.header
6023

61-
for.cond.cleanup3: ; preds = %for.cond1
62-
store i32 5, ptr %cleanup.dest.slot, align 4
63-
br label %for.end
24+
outer.header:
25+
%m_temp1 = phi i32 [%m, %entry], [%m_temp, %outer.latch]
26+
br label %inner.header
6427

65-
for.body4: ; preds = %for.cond1
66-
%2 = load ptr, ptr %a.addr, align 8
67-
%3 = load i32, ptr %i, align 4
68-
%idxprom = sext i32 %3 to i64
69-
%arrayidx = getelementptr inbounds i32, ptr %2, i64 %idxprom
70-
%4 = load i32, ptr %arrayidx, align 4
71-
%cmp5 = icmp slt i32 %4, 0
72-
br i1 %cmp5, label %if.then, label %if.else
7328

74-
if.then: ; preds = %for.body4
75-
%5 = load ptr, ptr %a.addr, align 8
76-
%6 = load i32, ptr %i, align 4
77-
%idxprom6 = sext i32 %6 to i64
78-
%arrayidx7 = getelementptr inbounds i32, ptr %5, i64 %idxprom6
79-
%7 = load i32, ptr %arrayidx7, align 4
80-
%8 = load ptr, ptr %neg.addr, align 8
81-
%9 = load i32, ptr %p, align 4
82-
%inc = add nsw i32 %9, 1
83-
store i32 %inc, ptr %p, align 4
84-
%idxprom8 = sext i32 %9 to i64
85-
%arrayidx9 = getelementptr inbounds i32, ptr %8, i64 %idxprom8
86-
store i32 %7, ptr %arrayidx9, align 4
87-
br label %if.end
29+
inner.header:
30+
%n_temp1 = phi i32 [%n, %outer.header], [%n_temp, %inner.latch]
8831

89-
if.else: ; preds = %for.body4
90-
%10 = load ptr, ptr %a.addr, align 8
91-
%11 = load i32, ptr %i, align 4
92-
%idxprom10 = sext i32 %11 to i64
93-
%arrayidx11 = getelementptr inbounds i32, ptr %10, i64 %idxprom10
94-
%12 = load i32, ptr %arrayidx11, align 4
95-
%13 = load ptr, ptr %pos.addr, align 8
96-
%14 = load i32, ptr %q, align 4
97-
%inc12 = add nsw i32 %14, 1
98-
store i32 %inc12, ptr %q, align 4
99-
%idxprom13 = sext i32 %14 to i64
100-
%arrayidx14 = getelementptr inbounds i32, ptr %13, i64 %idxprom13
101-
store i32 %12, ptr %arrayidx14, align 4
102-
br label %if.end
32+
br label %body
10333

104-
if.end: ; preds = %if.else, %if.then
105-
br label %for.inc
34+
body:
35+
; dummy code
10636

107-
for.inc: ; preds = %if.end
108-
%15 = load i32, ptr %j, align 4
109-
%inc15 = add nsw i32 %15, 1
110-
store i32 %inc15, ptr %j, align 4
111-
br label %for.cond1
37+
br label %inner.latch
11238

113-
for.end: ; preds = %for.cond.cleanup3
114-
br label %for.inc16
39+
inner.latch:
40+
%n_temp = add i32 %n_temp1, 1
41+
%cmp2 = icmp eq i32 %n_temp, 1
42+
br i1 %cmp2, label %outer.latch, label %inner.header
11543

116-
for.inc16: ; preds = %for.end
117-
%16 = load i32, ptr %i, align 4
118-
%inc17 = add nsw i32 %16, 1
119-
store i32 %inc17, ptr %i, align 4
120-
br label %for.cond
44+
outer.latch:
45+
%m_temp = add i32 %n, 1
46+
%cmp3 = icmp eq i32 %m_temp, 1
47+
br i1 %cmp3, label %exit, label %outer.header
12148

122-
for.end18: ; preds = %for.cond.cleanup
123-
ret void
49+
exit:
50+
ret void
12451
}
12552

0 commit comments

Comments
 (0)