236
|
1 ; RUN: opt %loadPolly -polly-print-dependences -disable-output < %s | FileCheck %s
|
150
|
2 ;
|
|
3 ; CHECK: RAW dependences:
|
221
|
4 ; CHECK-NEXT: { Stmt_S1[i0] -> Stmt_S2[i0, i0] : 0 <= i0 <= 98; Stmt_S2[i0, i0] -> Stmt_S3[i0] : 0 <= i0 <= 98; Stmt_S3[i0] -> Stmt_S2[o0, i0] : i0 >= 0 and i0 < o0 <= 98; Stmt_S2[i0, i1] -> Stmt_S1[i1] : i0 >= 0 and i0 < i1 <= 98 }
|
150
|
5 ; CHECK-NEXT: WAR dependences:
|
221
|
6 ; CHECK-NEXT: { Stmt_S1[i0] -> Stmt_S2[i0, i0] : 0 <= i0 <= 98; Stmt_S2[i0, i0] -> Stmt_S3[i0] : 0 <= i0 <= 98; Stmt_S3[i0] -> Stmt_S2[o0, i0] : i0 >= 0 and i0 < o0 <= 98; Stmt_S2[i0, i1] -> Stmt_S1[i1] : i0 >= 0 and i0 < i1 <= 98 }
|
150
|
7 ; CHECK-NEXT: WAW dependences:
|
221
|
8 ; CHECK-NEXT: { Stmt_S1[i0] -> Stmt_S2[i0, i0] : 0 <= i0 <= 98; Stmt_S2[i0, i0] -> Stmt_S3[i0] : 0 <= i0 <= 98; Stmt_S3[i0] -> Stmt_S2[o0, i0] : i0 >= 0 and i0 < o0 <= 98; Stmt_S2[i0, i1] -> Stmt_S1[i1] : i0 >= 0 and i0 < i1 <= 98 }
|
150
|
9 ; CHECK-NEXT: Reduction dependences:
|
|
10 ; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S2[1 + i0, i1] : (i0 >= 0 and 2 + i0 <= i1 <= 99) or (i0 <= 97 and 0 <= i1 < i0) }
|
|
11 ;
|
|
12 ; void f(int *sum) {
|
|
13 ; for (int i = 0; i < 99; i++) {
|
|
14 ; S1: sum[i] += 42;
|
|
15 ; for (int j = 0; j < 100; j++)
|
|
16 ; S2: sum[j] += i * j;
|
|
17 ; S3: sum[i] += 7;
|
|
18 ; }
|
|
19 ; }
|
|
20 ;
|
|
21 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
|
|
22
|
252
|
23 define void @f(ptr %sum) {
|
150
|
24 entry:
|
|
25 br label %for.cond
|
|
26
|
|
27 for.cond: ; preds = %for.inc8, %entry
|
|
28 %i.0 = phi i32 [ 0, %entry ], [ %inc9, %for.inc8 ]
|
|
29 %exitcond1 = icmp ne i32 %i.0, 99
|
|
30 br i1 %exitcond1, label %for.body, label %for.end10
|
|
31
|
|
32 for.body: ; preds = %for.cond
|
|
33 br label %S1
|
|
34
|
|
35 S1: ; preds = %for.body
|
252
|
36 %arrayidx = getelementptr inbounds i32, ptr %sum, i32 %i.0
|
|
37 %tmp = load i32, ptr %arrayidx, align 4
|
150
|
38 %add = add nsw i32 %tmp, 42
|
252
|
39 store i32 %add, ptr %arrayidx, align 4
|
150
|
40 br label %for.cond1
|
|
41
|
|
42 for.cond1: ; preds = %for.inc, %S1
|
|
43 %j.0 = phi i32 [ 0, %S1 ], [ %inc, %for.inc ]
|
|
44 %exitcond = icmp ne i32 %j.0, 100
|
|
45 br i1 %exitcond, label %for.body3, label %for.end
|
|
46
|
|
47 for.body3: ; preds = %for.cond1
|
|
48 br label %S2
|
|
49
|
|
50 S2: ; preds = %for.body3
|
|
51 %mul = mul nsw i32 %i.0, %j.0
|
252
|
52 %arrayidx4 = getelementptr inbounds i32, ptr %sum, i32 %j.0
|
|
53 %tmp2 = load i32, ptr %arrayidx4, align 4
|
150
|
54 %add5 = add nsw i32 %tmp2, %mul
|
252
|
55 store i32 %add5, ptr %arrayidx4, align 4
|
150
|
56 br label %for.inc
|
|
57
|
|
58 for.inc: ; preds = %S2
|
|
59 %inc = add nsw i32 %j.0, 1
|
|
60 br label %for.cond1
|
|
61
|
|
62 for.end: ; preds = %for.cond1
|
|
63 br label %S3
|
|
64
|
|
65 S3: ; preds = %for.end
|
252
|
66 %arrayidx6 = getelementptr inbounds i32, ptr %sum, i32 %i.0
|
|
67 %tmp3 = load i32, ptr %arrayidx6, align 4
|
150
|
68 %add7 = add nsw i32 %tmp3, 7
|
252
|
69 store i32 %add7, ptr %arrayidx6, align 4
|
150
|
70 br label %for.inc8
|
|
71
|
|
72 for.inc8: ; preds = %S3
|
|
73 %inc9 = add nsw i32 %i.0, 1
|
|
74 br label %for.cond
|
|
75
|
|
76 for.end10: ; preds = %for.cond
|
|
77 ret void
|
|
78 }
|