[ForwardOpTree] Allow out-of-quota in examination part of forwardTree.
[polly-mirror.git] / test / DependenceInfo / reduction_simple_iv_debug_wrapped_dependences.ll
blob4e783800ac18ecbfbdaf670b83475bada1172cdd
1 ; RUN: opt %loadPolly -polly-dependences -analyze -debug-only=polly-dependence 2>&1 < %s | FileCheck %s
3 ; REQUIRES: asserts
5 ; CHECK:      Read: { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> MemRef_sum[0] : 0 <= i0 <= 100 }
6 ; CHECK-NEXT: Write: { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> MemRef_sum[0] : 0 <= i0 <= 100 }
7 ; CHECK-NEXT: MayWrite: {  }
9 ; CHECK:      Wrapped Dependences:
10 ; CHECK-NEXT:     RAW dependences:
11 ; CHECK-NEXT:         { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> [Stmt_for_cond[1 + i0] -> MemRef_sum[0{{\]\]}} : 0 <= i0 <= 99 }
12 ; CHECK-NEXT:     WAR dependences:
13 ; CHECK-NEXT:         { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> [Stmt_for_cond[1 + i0] -> MemRef_sum[0{{\]\]}} : 0 <= i0 <= 99 }
14 ; CHECK-NEXT:     WAW dependences:
15 ; CHECK-NEXT:         { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> [Stmt_for_cond[1 + i0] -> MemRef_sum[0{{\]\]}} : 0 <= i0 <= 99 }
16 ; CHECK-NEXT:     Reduction dependences:
17 ; CHECK-NEXT:         n/a
19 ; CHECK:      Final Wrapped Dependences:
20 ; CHECK-NEXT:     RAW dependences:
21 ; CHECK-NEXT:         {  }
22 ; CHECK-NEXT:     WAR dependences:
23 ; CHECK-NEXT:         {  }
24 ; CHECK-NEXT:     WAW dependences:
25 ; CHECK-NEXT:         {  }
26 ; CHECK-NEXT:     Reduction dependences:
27 ; CHECK-NEXT:         { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> [Stmt_for_cond[1 + i0] -> MemRef_sum[0{{\]\]}} : 0 <= i0 <= 99 }
29 ; CHECK:      Zipped Dependences:
30 ; CHECK-NEXT:     RAW dependences:
31 ; CHECK-NEXT:         {  }
32 ; CHECK-NEXT:     WAR dependences:
33 ; CHECK-NEXT:         {  }
34 ; CHECK-NEXT:     WAW dependences:
35 ; CHECK-NEXT:         {  }
36 ; CHECK-NEXT:     Reduction dependences:
37 ; CHECK-NEXT:         { [Stmt_for_cond[i0] -> Stmt_for_cond[1 + i0{{\]\]}} -> [MemRef_sum[0] -> MemRef_sum[0{{\]\]}} : 0 <= i0 <= 99 }
39 ; CHECK:      Unwrapped Dependences:
40 ; CHECK-NEXT:     RAW dependences:
41 ; CHECK-NEXT:         {  }
42 ; CHECK-NEXT:     WAR dependences:
43 ; CHECK-NEXT:         {  }
44 ; CHECK-NEXT:     WAW dependences:
45 ; CHECK-NEXT:         {  }
46 ; CHECK-NEXT:     Reduction dependences:
47 ; CHECK-NEXT:         { Stmt_for_cond[i0] -> Stmt_for_cond[1 + i0] : 0 <= i0 <= 99 }
49 ; CHECK:          RAW dependences:
50 ; CHECK-NEXT:         {  }
51 ; CHECK-NEXT:     WAR dependences:
52 ; CHECK-NEXT:         {  }
53 ; CHECK-NEXT:     WAW dependences:
54 ; CHECK-NEXT:         {  }
55 ; CHECK-NEXT:     Reduction dependences:
56 ; CHECK-NEXT:         { Stmt_for_cond[i0] -> Stmt_for_cond[1 + i0] : 0 <= i0 <= 99 }
58 ; CHECK:          RAW dependences:
59 ; CHECK-NEXT:         {  }
60 ; CHECK-NEXT:     WAR dependences:
61 ; CHECK-NEXT:         {  }
62 ; CHECK-NEXT:     WAW dependences:
63 ; CHECK-NEXT:         {  }
64 ; CHECK-NEXT:     Reduction dependences:
65 ; CHECK-NEXT:         { Stmt_for_cond[i0] -> Stmt_for_cond[1 + i0] : 0 <= i0 <= 99 }
67 ; void f(int* sum) {
68 ;   for (int i = 0; i <= 100; i++)
69 ;     sum += i * 3;
70 ; }
71 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
73 define void @f(i32* %sum) {
74 entry:
75   br label %entry.split1
77 entry.split1:                                     ; preds = %entry
78   br label %entry.split
80 entry.split:                                      ; preds = %entry.split1
81   br label %for.cond
83 for.cond:                                         ; preds = %for.cond, %entry.split
84   %i1.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.cond ]
85   %sum.reload = load i32, i32* %sum
86   %mul = mul nsw i32 %i1.0, 3
87   %add = add nsw i32 %sum.reload, %mul
88   %inc = add nsw i32 %i1.0, 1
89   store i32 %add, i32* %sum
90   %cmp = icmp slt i32 %i1.0, 100
91   br i1 %cmp, label %for.cond, label %for.end
93 for.end:                                          ; preds = %for.cond
94   ret void