outofquota-reverseDomain.ll
6.67 KB
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