225 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<scops>' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s2;3; CHECK: Assumed Context:4; CHECK-NEXT: { : }5;6; Make sure the large number of read-only accesses does not cause make us7; invalidate the scop.8;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];20; }21; }22; }23;24target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"25 26define void @many_read_only_accesses(ptr %A, ptr %B) {27bb:28 br label %bb229 30bb2: ; preds = %bb172, %bb31 %i.0 = phi i64 [ 0, %bb ], [ %tmp173, %bb172 ]32 %exitcond1 = icmp ne i64 %i.0, 102433 br i1 %exitcond1, label %bb3, label %bb17434 35bb3: ; preds = %bb236 br label %bb437 38bb4: ; preds = %bb169, %bb339 %j.0 = phi i64 [ 0, %bb3 ], [ %tmp170, %bb169 ]40 %exitcond = icmp ne i64 %j.0, 102441 br i1 %exitcond, label %bb5, label %bb17142 43bb5: ; preds = %bb444 %tmp = getelementptr inbounds float, ptr %B, i64 %i.045 %tmp6 = load float, ptr %tmp, align 446 %tmp7 = add nuw nsw i64 %i.0, 147 %tmp8 = getelementptr inbounds float, ptr %B, i64 %tmp748 %tmp9 = load float, ptr %tmp8, align 449 %tmp10 = fadd float %tmp6, %tmp950 %tmp11 = add nuw nsw i64 %i.0, 251 %tmp12 = getelementptr inbounds float, ptr %B, i64 %tmp1152 %tmp13 = load float, ptr %tmp12, align 453 %tmp14 = fadd float %tmp10, %tmp1354 %tmp15 = add nuw nsw i64 %i.0, 355 %tmp16 = getelementptr inbounds float, ptr %B, i64 %tmp1556 %tmp17 = load float, ptr %tmp16, align 457 %tmp18 = fadd float %tmp14, %tmp1758 %tmp19 = add nuw nsw i64 %i.0, 459 %tmp20 = getelementptr inbounds float, ptr %B, i64 %tmp1960 %tmp21 = load float, ptr %tmp20, align 461 %tmp22 = fadd float %tmp18, %tmp2162 %tmp23 = add nuw nsw i64 %i.0, 563 %tmp24 = getelementptr inbounds float, ptr %B, i64 %tmp2364 %tmp25 = load float, ptr %tmp24, align 465 %tmp26 = fadd float %tmp22, %tmp2566 %tmp27 = add nuw nsw i64 %i.0, 667 %tmp28 = getelementptr inbounds float, ptr %B, i64 %tmp2768 %tmp29 = load float, ptr %tmp28, align 469 %tmp30 = fadd float %tmp26, %tmp2970 %tmp31 = add nuw nsw i64 %i.0, 771 %tmp32 = getelementptr inbounds float, ptr %B, i64 %tmp3172 %tmp33 = load float, ptr %tmp32, align 473 %tmp34 = fadd float %tmp30, %tmp3374 %tmp35 = add nuw nsw i64 %i.0, 875 %tmp36 = getelementptr inbounds float, ptr %B, i64 %tmp3576 %tmp37 = load float, ptr %tmp36, align 477 %tmp38 = fadd float %tmp34, %tmp3778 %tmp39 = add nuw nsw i64 %i.0, 979 %tmp40 = getelementptr inbounds float, ptr %B, i64 %tmp3980 %tmp41 = load float, ptr %tmp40, align 481 %tmp42 = fadd float %tmp38, %tmp4182 %tmp43 = getelementptr inbounds float, ptr %B, i64 %i.083 %tmp44 = load float, ptr %tmp43, align 484 %tmp45 = fadd float %tmp42, %tmp4485 %tmp46 = add nuw nsw i64 %i.0, 1186 %tmp47 = getelementptr inbounds float, ptr %B, i64 %tmp4687 %tmp48 = load float, ptr %tmp47, align 488 %tmp49 = fadd float %tmp45, %tmp4889 %tmp50 = add nuw nsw i64 %i.0, 1290 %tmp51 = getelementptr inbounds float, ptr %B, i64 %tmp5091 %tmp52 = load float, ptr %tmp51, align 492 %tmp53 = fadd float %tmp49, %tmp5293 %tmp54 = add nuw nsw i64 %i.0, 1394 %tmp55 = getelementptr inbounds float, ptr %B, i64 %tmp5495 %tmp56 = load float, ptr %tmp55, align 496 %tmp57 = fadd float %tmp53, %tmp5697 %tmp58 = add nuw nsw i64 %i.0, 1498 %tmp59 = getelementptr inbounds float, ptr %B, i64 %tmp5899 %tmp60 = load float, ptr %tmp59, align 4100 %tmp61 = fadd float %tmp57, %tmp60101 %tmp62 = add nuw nsw i64 %i.0, 15102 %tmp63 = getelementptr inbounds float, ptr %B, i64 %tmp62103 %tmp64 = load float, ptr %tmp63, align 4104 %tmp65 = fadd float %tmp61, %tmp64105 %tmp66 = add nuw nsw i64 %i.0, 16106 %tmp67 = getelementptr inbounds float, ptr %B, i64 %tmp66107 %tmp68 = load float, ptr %tmp67, align 4108 %tmp69 = fadd float %tmp65, %tmp68109 %tmp70 = add nuw nsw i64 %i.0, 17110 %tmp71 = getelementptr inbounds float, ptr %B, i64 %tmp70111 %tmp72 = load float, ptr %tmp71, align 4112 %tmp73 = fadd float %tmp69, %tmp72113 %tmp74 = add nuw nsw i64 %i.0, 18114 %tmp75 = getelementptr inbounds float, ptr %B, i64 %tmp74115 %tmp76 = load float, ptr %tmp75, align 4116 %tmp77 = fadd float %tmp73, %tmp76117 %tmp78 = add nuw nsw i64 %i.0, 19118 %tmp79 = getelementptr inbounds float, ptr %B, i64 %tmp78119 %tmp80 = load float, ptr %tmp79, align 4120 %tmp81 = fadd float %tmp77, %tmp80121 %tmp82 = add nuw nsw i64 %i.0, 10122 %tmp83 = getelementptr inbounds float, ptr %B, i64 %tmp82123 %tmp84 = load float, ptr %tmp83, align 4124 %tmp85 = fadd float %tmp81, %tmp84125 %tmp86 = add nuw nsw i64 %i.0, 21126 %tmp87 = getelementptr inbounds float, ptr %B, i64 %tmp86127 %tmp88 = load float, ptr %tmp87, align 4128 %tmp89 = fadd float %tmp85, %tmp88129 %tmp90 = add nuw nsw i64 %i.0, 22130 %tmp91 = getelementptr inbounds float, ptr %B, i64 %tmp90131 %tmp92 = load float, ptr %tmp91, align 4132 %tmp93 = fadd float %tmp89, %tmp92133 %tmp94 = add nuw nsw i64 %i.0, 23134 %tmp95 = getelementptr inbounds float, ptr %B, i64 %tmp94135 %tmp96 = load float, ptr %tmp95, align 4136 %tmp97 = fadd float %tmp93, %tmp96137 %tmp98 = add nuw nsw i64 %i.0, 24138 %tmp99 = getelementptr inbounds float, ptr %B, i64 %tmp98139 %tmp100 = load float, ptr %tmp99, align 4140 %tmp101 = fadd float %tmp97, %tmp100141 %tmp102 = add nuw nsw i64 %i.0, 25142 %tmp103 = getelementptr inbounds float, ptr %B, i64 %tmp102143 %tmp104 = load float, ptr %tmp103, align 4144 %tmp105 = fadd float %tmp101, %tmp104145 %tmp106 = add nuw nsw i64 %i.0, 26146 %tmp107 = getelementptr inbounds float, ptr %B, i64 %tmp106147 %tmp108 = load float, ptr %tmp107, align 4148 %tmp109 = fadd float %tmp105, %tmp108149 %tmp110 = add nuw nsw i64 %i.0, 27150 %tmp111 = getelementptr inbounds float, ptr %B, i64 %tmp110151 %tmp112 = load float, ptr %tmp111, align 4152 %tmp113 = fadd float %tmp109, %tmp112153 %tmp114 = add nuw nsw i64 %i.0, 28154 %tmp115 = getelementptr inbounds float, ptr %B, i64 %tmp114155 %tmp116 = load float, ptr %tmp115, align 4156 %tmp117 = fadd float %tmp113, %tmp116157 %tmp118 = add nuw nsw i64 %i.0, 29158 %tmp119 = getelementptr inbounds float, ptr %B, i64 %tmp118159 %tmp120 = load float, ptr %tmp119, align 4160 %tmp121 = fadd float %tmp117, %tmp120161 %tmp122 = add nuw nsw i64 %i.0, 20162 %tmp123 = getelementptr inbounds float, ptr %B, i64 %tmp122163 %tmp124 = load float, ptr %tmp123, align 4164 %tmp125 = fadd float %tmp121, %tmp124165 %tmp126 = add nuw nsw i64 %i.0, 31166 %tmp127 = getelementptr inbounds float, ptr %B, i64 %tmp126167 %tmp128 = load float, ptr %tmp127, align 4168 %tmp129 = fadd float %tmp125, %tmp128169 %tmp130 = add nuw nsw i64 %i.0, 32170 %tmp131 = getelementptr inbounds float, ptr %B, i64 %tmp130171 %tmp132 = load float, ptr %tmp131, align 4172 %tmp133 = fadd float %tmp129, %tmp132173 %tmp134 = add nuw nsw i64 %i.0, 33174 %tmp135 = getelementptr inbounds float, ptr %B, i64 %tmp134175 %tmp136 = load float, ptr %tmp135, align 4176 %tmp137 = fadd float %tmp133, %tmp136177 %tmp138 = add nuw nsw i64 %i.0, 34178 %tmp139 = getelementptr inbounds float, ptr %B, i64 %tmp138179 %tmp140 = load float, ptr %tmp139, align 4180 %tmp141 = fadd float %tmp137, %tmp140181 %tmp142 = add nuw nsw i64 %i.0, 35182 %tmp143 = getelementptr inbounds float, ptr %B, i64 %tmp142183 %tmp144 = load float, ptr %tmp143, align 4184 %tmp145 = fadd float %tmp141, %tmp144185 %tmp146 = add nuw nsw i64 %i.0, 36186 %tmp147 = getelementptr inbounds float, ptr %B, i64 %tmp146187 %tmp148 = load float, ptr %tmp147, align 4188 %tmp149 = fadd float %tmp145, %tmp148189 %tmp150 = add nuw nsw i64 %i.0, 37190 %tmp151 = getelementptr inbounds float, ptr %B, i64 %tmp150191 %tmp152 = load float, ptr %tmp151, align 4192 %tmp153 = fadd float %tmp149, %tmp152193 %tmp154 = add nuw nsw i64 %i.0, 38194 %tmp155 = getelementptr inbounds float, ptr %B, i64 %tmp154195 %tmp156 = load float, ptr %tmp155, align 4196 %tmp157 = fadd float %tmp153, %tmp156197 %tmp158 = add nuw nsw i64 %i.0, 39198 %tmp159 = getelementptr inbounds float, ptr %B, i64 %tmp158199 %tmp160 = load float, ptr %tmp159, align 4200 %tmp161 = fadd float %tmp157, %tmp160201 %tmp162 = add nuw nsw i64 %i.0, 30202 %tmp163 = getelementptr inbounds float, ptr %B, i64 %tmp162203 %tmp164 = load float, ptr %tmp163, align 4204 %tmp165 = fadd float %tmp161, %tmp164205 %tmp166 = getelementptr inbounds float, ptr %A, i64 %j.0206 %tmp167 = load float, ptr %tmp166, align 4207 %tmp168 = fadd float %tmp167, %tmp165208 store float %tmp168, ptr %tmp166, align 4209 br label %bb169210 211bb169: ; preds = %bb5212 %tmp170 = add nuw nsw i64 %j.0, 1213 br label %bb4214 215bb171: ; preds = %bb4216 br label %bb172217 218bb172: ; preds = %bb171219 %tmp173 = add nuw nsw i64 %i.0, 1220 br label %bb2221 222bb174: ; preds = %bb2223 ret void224}225