1 ; RUN: opt %loadPolly -polly-print-scops -disable-output < %s | FileCheck %s
3 ; CHECK: Assumed Context:
6 ; Make sure the large number of read-only accesses does not cause make us
9 ; void many_read_only_accesses(float A[], float B[]) {
10 ; for (long i = 0; i < 1024; i++) {
11 ; for (long j = 0; j < 1024; j++) {
12 ; A[j] += B[i] + B[i + 1] + B[i + 2] + B[i + 3] + B[i + 4] + B[i + 5] +
13 ; B[i + 6] + B[i + 7] + B[i + 8] + B[i + 9] + B[i + 0] + B[i + 11] +
14 ; B[i + 12] + B[i + 13] + B[i + 14] + B[i + 15] + B[i + 16] +
15 ; B[i + 17] + B[i + 18] + B[i + 19] + B[i + 10] + B[i + 21] +
16 ; B[i + 22] + B[i + 23] + B[i + 24] + B[i + 25] + B[i + 26] +
17 ; B[i + 27] + B[i + 28] + B[i + 29] + B[i + 20] + B[i + 31] +
18 ; B[i + 32] + B[i + 33] + B[i + 34] + B[i + 35] + B[i + 36] +
19 ; B[i + 37] + B[i + 38] + B[i + 39] + B[i + 30];
24 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
26 define void @many_read_only_accesses(ptr %A, ptr %B) {
30 bb2: ; preds = %bb172, %bb
31 %i.0 = phi i64 [ 0, %bb ], [ %tmp173, %bb172 ]
32 %exitcond1 = icmp ne i64 %i.0, 1024
33 br i1 %exitcond1, label %bb3, label %bb174
38 bb4: ; preds = %bb169, %bb3
39 %j.0 = phi i64 [ 0, %bb3 ], [ %tmp170, %bb169 ]
40 %exitcond = icmp ne i64 %j.0, 1024
41 br i1 %exitcond, label %bb5, label %bb171
44 %tmp = getelementptr inbounds float, ptr %B, i64 %i.0
45 %tmp6 = load float, ptr %tmp, align 4
46 %tmp7 = add nuw nsw i64 %i.0, 1
47 %tmp8 = getelementptr inbounds float, ptr %B, i64 %tmp7
48 %tmp9 = load float, ptr %tmp8, align 4
49 %tmp10 = fadd float %tmp6, %tmp9
50 %tmp11 = add nuw nsw i64 %i.0, 2
51 %tmp12 = getelementptr inbounds float, ptr %B, i64 %tmp11
52 %tmp13 = load float, ptr %tmp12, align 4
53 %tmp14 = fadd float %tmp10, %tmp13
54 %tmp15 = add nuw nsw i64 %i.0, 3
55 %tmp16 = getelementptr inbounds float, ptr %B, i64 %tmp15
56 %tmp17 = load float, ptr %tmp16, align 4
57 %tmp18 = fadd float %tmp14, %tmp17
58 %tmp19 = add nuw nsw i64 %i.0, 4
59 %tmp20 = getelementptr inbounds float, ptr %B, i64 %tmp19
60 %tmp21 = load float, ptr %tmp20, align 4
61 %tmp22 = fadd float %tmp18, %tmp21
62 %tmp23 = add nuw nsw i64 %i.0, 5
63 %tmp24 = getelementptr inbounds float, ptr %B, i64 %tmp23
64 %tmp25 = load float, ptr %tmp24, align 4
65 %tmp26 = fadd float %tmp22, %tmp25
66 %tmp27 = add nuw nsw i64 %i.0, 6
67 %tmp28 = getelementptr inbounds float, ptr %B, i64 %tmp27
68 %tmp29 = load float, ptr %tmp28, align 4
69 %tmp30 = fadd float %tmp26, %tmp29
70 %tmp31 = add nuw nsw i64 %i.0, 7
71 %tmp32 = getelementptr inbounds float, ptr %B, i64 %tmp31
72 %tmp33 = load float, ptr %tmp32, align 4
73 %tmp34 = fadd float %tmp30, %tmp33
74 %tmp35 = add nuw nsw i64 %i.0, 8
75 %tmp36 = getelementptr inbounds float, ptr %B, i64 %tmp35
76 %tmp37 = load float, ptr %tmp36, align 4
77 %tmp38 = fadd float %tmp34, %tmp37
78 %tmp39 = add nuw nsw i64 %i.0, 9
79 %tmp40 = getelementptr inbounds float, ptr %B, i64 %tmp39
80 %tmp41 = load float, ptr %tmp40, align 4
81 %tmp42 = fadd float %tmp38, %tmp41
82 %tmp43 = getelementptr inbounds float, ptr %B, i64 %i.0
83 %tmp44 = load float, ptr %tmp43, align 4
84 %tmp45 = fadd float %tmp42, %tmp44
85 %tmp46 = add nuw nsw i64 %i.0, 11
86 %tmp47 = getelementptr inbounds float, ptr %B, i64 %tmp46
87 %tmp48 = load float, ptr %tmp47, align 4
88 %tmp49 = fadd float %tmp45, %tmp48
89 %tmp50 = add nuw nsw i64 %i.0, 12
90 %tmp51 = getelementptr inbounds float, ptr %B, i64 %tmp50
91 %tmp52 = load float, ptr %tmp51, align 4
92 %tmp53 = fadd float %tmp49, %tmp52
93 %tmp54 = add nuw nsw i64 %i.0, 13
94 %tmp55 = getelementptr inbounds float, ptr %B, i64 %tmp54
95 %tmp56 = load float, ptr %tmp55, align 4
96 %tmp57 = fadd float %tmp53, %tmp56
97 %tmp58 = add nuw nsw i64 %i.0, 14
98 %tmp59 = getelementptr inbounds float, ptr %B, i64 %tmp58
99 %tmp60 = load float, ptr %tmp59, align 4
100 %tmp61 = fadd float %tmp57, %tmp60
101 %tmp62 = add nuw nsw i64 %i.0, 15
102 %tmp63 = getelementptr inbounds float, ptr %B, i64 %tmp62
103 %tmp64 = load float, ptr %tmp63, align 4
104 %tmp65 = fadd float %tmp61, %tmp64
105 %tmp66 = add nuw nsw i64 %i.0, 16
106 %tmp67 = getelementptr inbounds float, ptr %B, i64 %tmp66
107 %tmp68 = load float, ptr %tmp67, align 4
108 %tmp69 = fadd float %tmp65, %tmp68
109 %tmp70 = add nuw nsw i64 %i.0, 17
110 %tmp71 = getelementptr inbounds float, ptr %B, i64 %tmp70
111 %tmp72 = load float, ptr %tmp71, align 4
112 %tmp73 = fadd float %tmp69, %tmp72
113 %tmp74 = add nuw nsw i64 %i.0, 18
114 %tmp75 = getelementptr inbounds float, ptr %B, i64 %tmp74
115 %tmp76 = load float, ptr %tmp75, align 4
116 %tmp77 = fadd float %tmp73, %tmp76
117 %tmp78 = add nuw nsw i64 %i.0, 19
118 %tmp79 = getelementptr inbounds float, ptr %B, i64 %tmp78
119 %tmp80 = load float, ptr %tmp79, align 4
120 %tmp81 = fadd float %tmp77, %tmp80
121 %tmp82 = add nuw nsw i64 %i.0, 10
122 %tmp83 = getelementptr inbounds float, ptr %B, i64 %tmp82
123 %tmp84 = load float, ptr %tmp83, align 4
124 %tmp85 = fadd float %tmp81, %tmp84
125 %tmp86 = add nuw nsw i64 %i.0, 21
126 %tmp87 = getelementptr inbounds float, ptr %B, i64 %tmp86
127 %tmp88 = load float, ptr %tmp87, align 4
128 %tmp89 = fadd float %tmp85, %tmp88
129 %tmp90 = add nuw nsw i64 %i.0, 22
130 %tmp91 = getelementptr inbounds float, ptr %B, i64 %tmp90
131 %tmp92 = load float, ptr %tmp91, align 4
132 %tmp93 = fadd float %tmp89, %tmp92
133 %tmp94 = add nuw nsw i64 %i.0, 23
134 %tmp95 = getelementptr inbounds float, ptr %B, i64 %tmp94
135 %tmp96 = load float, ptr %tmp95, align 4
136 %tmp97 = fadd float %tmp93, %tmp96
137 %tmp98 = add nuw nsw i64 %i.0, 24
138 %tmp99 = getelementptr inbounds float, ptr %B, i64 %tmp98
139 %tmp100 = load float, ptr %tmp99, align 4
140 %tmp101 = fadd float %tmp97, %tmp100
141 %tmp102 = add nuw nsw i64 %i.0, 25
142 %tmp103 = getelementptr inbounds float, ptr %B, i64 %tmp102
143 %tmp104 = load float, ptr %tmp103, align 4
144 %tmp105 = fadd float %tmp101, %tmp104
145 %tmp106 = add nuw nsw i64 %i.0, 26
146 %tmp107 = getelementptr inbounds float, ptr %B, i64 %tmp106
147 %tmp108 = load float, ptr %tmp107, align 4
148 %tmp109 = fadd float %tmp105, %tmp108
149 %tmp110 = add nuw nsw i64 %i.0, 27
150 %tmp111 = getelementptr inbounds float, ptr %B, i64 %tmp110
151 %tmp112 = load float, ptr %tmp111, align 4
152 %tmp113 = fadd float %tmp109, %tmp112
153 %tmp114 = add nuw nsw i64 %i.0, 28
154 %tmp115 = getelementptr inbounds float, ptr %B, i64 %tmp114
155 %tmp116 = load float, ptr %tmp115, align 4
156 %tmp117 = fadd float %tmp113, %tmp116
157 %tmp118 = add nuw nsw i64 %i.0, 29
158 %tmp119 = getelementptr inbounds float, ptr %B, i64 %tmp118
159 %tmp120 = load float, ptr %tmp119, align 4
160 %tmp121 = fadd float %tmp117, %tmp120
161 %tmp122 = add nuw nsw i64 %i.0, 20
162 %tmp123 = getelementptr inbounds float, ptr %B, i64 %tmp122
163 %tmp124 = load float, ptr %tmp123, align 4
164 %tmp125 = fadd float %tmp121, %tmp124
165 %tmp126 = add nuw nsw i64 %i.0, 31
166 %tmp127 = getelementptr inbounds float, ptr %B, i64 %tmp126
167 %tmp128 = load float, ptr %tmp127, align 4
168 %tmp129 = fadd float %tmp125, %tmp128
169 %tmp130 = add nuw nsw i64 %i.0, 32
170 %tmp131 = getelementptr inbounds float, ptr %B, i64 %tmp130
171 %tmp132 = load float, ptr %tmp131, align 4
172 %tmp133 = fadd float %tmp129, %tmp132
173 %tmp134 = add nuw nsw i64 %i.0, 33
174 %tmp135 = getelementptr inbounds float, ptr %B, i64 %tmp134
175 %tmp136 = load float, ptr %tmp135, align 4
176 %tmp137 = fadd float %tmp133, %tmp136
177 %tmp138 = add nuw nsw i64 %i.0, 34
178 %tmp139 = getelementptr inbounds float, ptr %B, i64 %tmp138
179 %tmp140 = load float, ptr %tmp139, align 4
180 %tmp141 = fadd float %tmp137, %tmp140
181 %tmp142 = add nuw nsw i64 %i.0, 35
182 %tmp143 = getelementptr inbounds float, ptr %B, i64 %tmp142
183 %tmp144 = load float, ptr %tmp143, align 4
184 %tmp145 = fadd float %tmp141, %tmp144
185 %tmp146 = add nuw nsw i64 %i.0, 36
186 %tmp147 = getelementptr inbounds float, ptr %B, i64 %tmp146
187 %tmp148 = load float, ptr %tmp147, align 4
188 %tmp149 = fadd float %tmp145, %tmp148
189 %tmp150 = add nuw nsw i64 %i.0, 37
190 %tmp151 = getelementptr inbounds float, ptr %B, i64 %tmp150
191 %tmp152 = load float, ptr %tmp151, align 4
192 %tmp153 = fadd float %tmp149, %tmp152
193 %tmp154 = add nuw nsw i64 %i.0, 38
194 %tmp155 = getelementptr inbounds float, ptr %B, i64 %tmp154
195 %tmp156 = load float, ptr %tmp155, align 4
196 %tmp157 = fadd float %tmp153, %tmp156
197 %tmp158 = add nuw nsw i64 %i.0, 39
198 %tmp159 = getelementptr inbounds float, ptr %B, i64 %tmp158
199 %tmp160 = load float, ptr %tmp159, align 4
200 %tmp161 = fadd float %tmp157, %tmp160
201 %tmp162 = add nuw nsw i64 %i.0, 30
202 %tmp163 = getelementptr inbounds float, ptr %B, i64 %tmp162
203 %tmp164 = load float, ptr %tmp163, align 4
204 %tmp165 = fadd float %tmp161, %tmp164
205 %tmp166 = getelementptr inbounds float, ptr %A, i64 %j.0
206 %tmp167 = load float, ptr %tmp166, align 4
207 %tmp168 = fadd float %tmp167, %tmp165
208 store float %tmp168, ptr %tmp166, align 4
211 bb169: ; preds = %bb5
212 %tmp170 = add nuw nsw i64 %j.0, 1
215 bb171: ; preds = %bb4
218 bb172: ; preds = %bb171
219 %tmp173 = add nuw nsw i64 %i.0, 1
222 bb174: ; preds = %bb2