summaryrefslogtreecommitdiffstats
path: root/polly/test/DeLICM/outofquota-reverseDomain.ll
blob: 79aa4bc378f6b8f5aac1d558eca27e971d1b60f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
; RUN: opt %loadPolly -polly-delicm-max-ops=1000000 -polly-delicm -analyze < %s | FileCheck %s
;
; This causes an assertion to fail on out-of-quota after 1000000 operations.
; (The error was specific to -polly-delicm-max-ops=1000000 and changes
;  in the implementation are likely to change the number of operations
;  up to the point where the error uses to occur)
;
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"

define void @test(i32 %size, double* %lhs, i32 %lhsStride, double* %_rhs, double* %res, double %alpha) {
entry:
  br label %if.end

if.end:                                           ; preds = %entry
  %sub = add nsw i32 %size, -8
  %cmp.i.i.i = icmp sgt i32 %sub, 0
  %.sroa.speculated = select i1 %cmp.i.i.i, i32 %sub, i32 0
  %and36 = and i32 %.sroa.speculated, -2
  %cmp38463 = icmp sgt i32 %and36, 0
  br i1 %cmp38463, label %for.body40, label %for.cond177.preheader

for.cond177.preheader:                            ; preds = %for.cond.cleanup142, %if.end
  br label %for.body180

for.body40:                                       ; preds = %for.cond.cleanup142, %if.end
  %j.0464 = phi i32 [ %add55, %for.cond.cleanup142 ], [ 0, %if.end ]
  %mul41 = mul nsw i32 %j.0464, %lhsStride
  %add.ptr42 = getelementptr inbounds double, double* %lhs, i32 %mul41
  %add43 = or i32 %j.0464, 1
  %arrayidx46 = getelementptr inbounds double, double* %_rhs, i32 %j.0464
  %tmp = load double, double* %arrayidx46, align 8
  %mul47 = fmul double %tmp, %alpha
  %add55 = add nuw nsw i32 %j.0464, 2
  %arrayidx67 = getelementptr inbounds double, double* %res, i32 %j.0464
  %tmp1 = load double, double* %arrayidx67, align 8
  store double undef, double* %arrayidx67, align 8
  %arrayidx75 = getelementptr inbounds double, double* %res, i32 %add43
  %tmp2 = load double, double* %arrayidx75, align 8
  store double undef, double* %arrayidx75, align 8
  %arrayidx78 = getelementptr inbounds double, double* %add.ptr42, i32 %add43
  %tmp3 = load double, double* %arrayidx78, align 8
  %mul.i.i388 = fmul double %mul47, %tmp3
  %add88 = fadd double undef, 0.000000e+00
  %cmp120448 = icmp ult i32 %add55, %size
  br i1 %cmp120448, label %for.body122.preheader, label %for.cond.cleanup142

for.body122.preheader:                            ; preds = %for.body40
  %add.ptr117 = getelementptr inbounds double, double* %res, i32 %add55
  br label %for.body122

for.body122:                                      ; preds = %for.body122, %for.body122.preheader
  %i118.0455 = phi i32 [ %add137, %for.body122 ], [ %add55, %for.body122.preheader ]
  %resIt.0454 = phi double* [ %add.ptr135, %for.body122 ], [ %add.ptr117, %for.body122.preheader ]
  %ptmp2.0450 = phi double [ undef, %for.body122 ], [ 0.000000e+00, %for.body122.preheader ]
  %tmp4 = load double, double* %resIt.0454, align 8
  %add.i.i.i386 = fadd double undef, %tmp4
  %add.i.i.i384 = fadd double undef, %add.i.i.i386
  store double %add.i.i.i384, double* %resIt.0454, align 8
  %add.ptr135 = getelementptr inbounds double, double* %resIt.0454, i32 1
  %add137 = add nuw i32 %i118.0455, 1
  %exitcond469 = icmp eq i32 %add137, %size
  br i1 %exitcond469, label %for.cond.cleanup142.loopexit, label %for.body122

for.cond.cleanup142.loopexit:                     ; preds = %for.body122
  %.pre = load double, double* %arrayidx67, align 8
  %.pre471 = load double, double* %arrayidx75, align 8
  br label %for.cond.cleanup142

for.cond.cleanup142:                              ; preds = %for.cond.cleanup142.loopexit, %for.body40
  %tmp5 = phi double [ undef, %for.body40 ], [ %.pre471, %for.cond.cleanup142.loopexit ]
  %tmp6 = phi double [ undef, %for.body40 ], [ %.pre, %for.cond.cleanup142.loopexit ]
  %ptmp2.0.lcssa = phi double [ 0.000000e+00, %for.body40 ], [ undef, %for.cond.cleanup142.loopexit ]
  %add163 = fadd double %add88, %ptmp2.0.lcssa
  store double undef, double* %arrayidx67, align 8
  store double undef, double* %arrayidx75, align 8
  %cmp38 = icmp ult i32 %add55, %and36
  br i1 %cmp38, label %for.body40, label %for.cond177.preheader

for.cond.cleanup179:                              ; preds = %for.cond.cleanup198
  ret void

for.body180:                                      ; preds = %for.cond.cleanup198, %for.cond177.preheader
  %j176.0442 = phi i32 [ %add195, %for.cond.cleanup198 ], [ %and36, %for.cond177.preheader ]
  %add.ptr183 = getelementptr inbounds double, double* %lhs, i32 0
  %arrayidx185 = getelementptr inbounds double, double* %_rhs, i32 %j176.0442
  %tmp7 = load double, double* %arrayidx185, align 8
  %mul186 = fmul double %tmp7, %alpha
  %arrayidx189 = getelementptr inbounds double, double* %add.ptr183, i32 %j176.0442
  %tmp8 = load double, double* %arrayidx189, align 8
  %mul.i.i373 = fmul double %tmp8, %mul186
  %arrayidx192 = getelementptr inbounds double, double* %res, i32 %j176.0442
  %tmp9 = load double, double* %arrayidx192, align 8
  %add193 = fadd double %tmp9, %mul.i.i373
  store double %add193, double* %arrayidx192, align 8
  %add195 = add nuw nsw i32 %j176.0442, 1
  %cmp197438 = icmp slt i32 %add195, %size
  br i1 %cmp197438, label %for.body199, label %for.cond.cleanup198

for.cond.cleanup198.loopexit:                     ; preds = %for.body199
  %.pre472 = load double, double* %arrayidx192, align 8
  br label %for.cond.cleanup198

for.cond.cleanup198:                              ; preds = %for.cond.cleanup198.loopexit, %for.body180
  %tmp10 = phi double [ %add193, %for.body180 ], [ %.pre472, %for.cond.cleanup198.loopexit ]
  %t2187.0.lcssa = phi double [ 0.000000e+00, %for.body180 ], [ %add207, %for.cond.cleanup198.loopexit ]
  %add213 = fadd double %tmp10, undef
  store double %add213, double* %arrayidx192, align 8
  %exitcond468 = icmp eq i32 %add195, %size
  br i1 %exitcond468, label %for.cond.cleanup179, label %for.body180

for.body199:                                      ; preds = %for.body199, %for.body180
  %i194.0440 = phi i32 [ %inc209, %for.body199 ], [ %add195, %for.body180 ]
  %arrayidx200 = getelementptr inbounds double, double* %add.ptr183, i32 %i194.0440
  %tmp11 = load double, double* %arrayidx200, align 8
  %mul.i.i372 = fmul double %mul186, %tmp11
  %arrayidx202 = getelementptr inbounds double, double* %res, i32 %i194.0440
  %tmp12 = load double, double* %arrayidx202, align 8
  %add203 = fadd double %tmp12, %mul.i.i372
  store double %add203, double* %arrayidx202, align 8
  %arrayidx205 = getelementptr inbounds double, double* %_rhs, i32 %i194.0440
  %tmp13 = load double, double* %arrayidx200, align 8
  %tmp14 = load double, double* %arrayidx205, align 8
  %mul.i.i = fmul double %tmp13, %tmp14
  %add207 = fadd double undef, %mul.i.i
  %inc209 = add nuw nsw i32 %i194.0440, 1
  %exitcond = icmp eq i32 %inc209, %size
  br i1 %exitcond, label %for.cond.cleanup198.loopexit, label %for.body199
}


; CHECK: Zone not computed
OpenPOWER on IntegriCloud