| 242 | | .preheader: ; preds = %4 |
| | 245 | ; <label>:4 ; preds = %4, %0 |
| | 246 | %indvar21 = phi i64 [ 0, %0 ], [ %indvar.next22, %4 ] |
| | 247 | %i.06 = trunc i64 %indvar21 to i32 |
| | 248 | %scevgep25 = getelementptr [40000 x float]* %2, i64 0, i64 %indvar21 |
| | 249 | %scevgep26 = getelementptr [40000 x float]* %1, i64 0, i64 %indvar21 |
| | 250 | %tmp27 = add i64 %indvar21, 40000 |
| | 251 | %tmp28 = trunc i64 %tmp27 to i32 |
| | 252 | %5 = sitofp i32 %i.06 to float |
| | 253 | store float %5, float* %scevgep26, align 4, !tbaa !0 |
| | 254 | %6 = sitofp i32 %tmp28 to float |
| | 255 | store float %6, float* %scevgep25, align 4, !tbaa !0 |
| | 256 | %indvar.next22 = add i64 %indvar21, 1 |
| | 257 | %exitcond23 = icmp eq i64 %indvar.next22, 40000 |
| | 258 | br i1 %exitcond23, label %7, label %4 |
| | 259 | |
| | 260 | ; <label>:7 ; preds = %4 |
| 244 | | br label %7 |
| 245 | | |
| 246 | | ; <label>:4 ; preds = %4, %0 |
| 247 | | %indvar20 = phi i64 [ 0, %0 ], [ %indvar.next21, %4 ] |
| 248 | | %i.05 = trunc i64 %indvar20 to i32 |
| 249 | | %scevgep24 = getelementptr [40000 x float]* %2, i64 0, i64 %indvar20 |
| 250 | | %scevgep25 = getelementptr [40000 x float]* %1, i64 0, i64 %indvar20 |
| 251 | | %tmp26 = add i64 %indvar20, 40000 |
| 252 | | %tmp27 = trunc i64 %tmp26 to i32 |
| 253 | | %5 = sitofp i32 %i.05 to float |
| 254 | | store float %5, float* %scevgep25, align 4, !tbaa !0 |
| 255 | | %6 = sitofp i32 %tmp27 to float |
| 256 | | store float %6, float* %scevgep24, align 4, !tbaa !0 |
| 257 | | %indvar.next21 = add i64 %indvar20, 1 |
| 258 | | %exitcond22 = icmp eq i64 %indvar.next21, 40000 |
| 259 | | br i1 %exitcond22, label %.preheader, label %4 |
| 260 | | |
| 261 | | ; <label>:7 ; preds = %7, %.preheader |
| 262 | | %indvar = phi i64 [ 0, %.preheader ], [ %indvar.next, %7 ] |
| | 262 | %puts4 = call i32 @puts(i8* getelementptr inbounds ([18 x i8]* @str3, i64 0, i64 0)) |
| | 263 | br label %8 |
| | 264 | |
| | 265 | ; <label>:8 ; preds = %8, %7 |
| | 266 | %indvar = phi i64 [ 0, %7 ], [ %indvar.next, %8 ] |
| 265 | | %scevgep6 = getelementptr [40000 x float]* %2, i64 0, i64 %tmp |
| 266 | | %scevgep7 = getelementptr [40000 x float]* %1, i64 0, i64 %tmp |
| 267 | | %tmp828 = or i64 %tmp, 1 |
| 268 | | %scevgep9 = getelementptr [40000 x float]* %3, i64 0, i64 %tmp828 |
| 269 | | %scevgep10 = getelementptr [40000 x float]* %2, i64 0, i64 %tmp828 |
| 270 | | %scevgep11 = getelementptr [40000 x float]* %1, i64 0, i64 %tmp828 |
| 271 | | %tmp1229 = or i64 %tmp, 2 |
| 272 | | %scevgep13 = getelementptr [40000 x float]* %3, i64 0, i64 %tmp1229 |
| 273 | | %scevgep14 = getelementptr [40000 x float]* %2, i64 0, i64 %tmp1229 |
| 274 | | %scevgep15 = getelementptr [40000 x float]* %1, i64 0, i64 %tmp1229 |
| 275 | | %tmp1630 = or i64 %tmp, 3 |
| 276 | | %scevgep17 = getelementptr [40000 x float]* %3, i64 0, i64 %tmp1630 |
| 277 | | %scevgep18 = getelementptr [40000 x float]* %2, i64 0, i64 %tmp1630 |
| 278 | | %scevgep19 = getelementptr [40000 x float]* %1, i64 0, i64 %tmp1630 |
| 279 | | %8 = load float* %scevgep7, align 16, !tbaa !0 |
| 280 | | %9 = load float* %scevgep6, align 16, !tbaa !0 |
| 281 | | %10 = fadd float %8, %9 |
| 282 | | store float %10, float* %scevgep, align 16, !tbaa !0 |
| 283 | | %11 = load float* %scevgep11, align 4, !tbaa !0 |
| 284 | | %12 = load float* %scevgep10, align 4, !tbaa !0 |
| 285 | | %13 = fadd float %11, %12 |
| 286 | | store float %13, float* %scevgep9, align 4, !tbaa !0 |
| 287 | | %14 = load float* %scevgep15, align 8, !tbaa !0 |
| 288 | | %15 = load float* %scevgep14, align 8, !tbaa !0 |
| 289 | | %16 = fadd float %14, %15 |
| 290 | | store float %16, float* %scevgep13, align 8, !tbaa !0 |
| 291 | | %17 = load float* %scevgep19, align 4, !tbaa !0 |
| 292 | | %18 = load float* %scevgep18, align 4, !tbaa !0 |
| 293 | | %19 = fadd float %17, %18 |
| 294 | | store float %19, float* %scevgep17, align 4, !tbaa !0 |
| | 269 | %scevgep7 = getelementptr [40000 x float]* %2, i64 0, i64 %tmp |
| | 270 | %scevgep8 = getelementptr [40000 x float]* %1, i64 0, i64 %tmp |
| | 271 | %tmp929 = or i64 %tmp, 1 |
| | 272 | %scevgep10 = getelementptr [40000 x float]* %3, i64 0, i64 %tmp929 |
| | 273 | %scevgep11 = getelementptr [40000 x float]* %2, i64 0, i64 %tmp929 |
| | 274 | %scevgep12 = getelementptr [40000 x float]* %1, i64 0, i64 %tmp929 |
| | 275 | %tmp1330 = or i64 %tmp, 2 |
| | 276 | %scevgep14 = getelementptr [40000 x float]* %3, i64 0, i64 %tmp1330 |
| | 277 | %scevgep15 = getelementptr [40000 x float]* %2, i64 0, i64 %tmp1330 |
| | 278 | %scevgep16 = getelementptr [40000 x float]* %1, i64 0, i64 %tmp1330 |
| | 279 | %tmp1731 = or i64 %tmp, 3 |
| | 280 | %scevgep18 = getelementptr [40000 x float]* %3, i64 0, i64 %tmp1731 |
| | 281 | %scevgep19 = getelementptr [40000 x float]* %2, i64 0, i64 %tmp1731 |
| | 282 | %scevgep20 = getelementptr [40000 x float]* %1, i64 0, i64 %tmp1731 |
| | 283 | %9 = load float* %scevgep8, align 16, !tbaa !0 |
| | 284 | %10 = load float* %scevgep7, align 16, !tbaa !0 |
| | 285 | %11 = fadd float %9, %10 |
| | 286 | store float %11, float* %scevgep, align 16, !tbaa !0 |
| | 287 | %12 = load float* %scevgep12, align 4, !tbaa !0 |
| | 288 | %13 = load float* %scevgep11, align 4, !tbaa !0 |
| | 289 | %14 = fadd float %12, %13 |
| | 290 | store float %14, float* %scevgep10, align 4, !tbaa !0 |
| | 291 | %15 = load float* %scevgep16, align 8, !tbaa !0 |
| | 292 | %16 = load float* %scevgep15, align 8, !tbaa !0 |
| | 293 | %17 = fadd float %15, %16 |
| | 294 | store float %17, float* %scevgep14, align 8, !tbaa !0 |
| | 295 | %18 = load float* %scevgep20, align 4, !tbaa !0 |
| | 296 | %19 = load float* %scevgep19, align 4, !tbaa !0 |
| | 297 | %20 = fadd float %18, %19 |
| | 298 | store float %20, float* %scevgep18, align 4, !tbaa !0 |
| 297 | | br i1 %exitcond, label %20, label %7 |
| 298 | | |
| 299 | | ; <label>:20 ; preds = %7 |
| 300 | | %21 = load float* %.sub3, align 16, !tbaa !0 |
| 301 | | %22 = fpext float %21 to double |
| 302 | | %23 = getelementptr inbounds [40000 x float]* %3, i64 0, i64 1 |
| 303 | | %24 = load float* %23, align 4, !tbaa !0 |
| 304 | | %25 = fpext float %24 to double |
| 305 | | %26 = getelementptr inbounds [40000 x float]* %3, i64 0, i64 2 |
| 306 | | %27 = load float* %26, align 8, !tbaa !0 |
| 307 | | %28 = fpext float %27 to double |
| 308 | | %29 = getelementptr inbounds [40000 x float]* %3, i64 0, i64 3 |
| 309 | | %30 = load float* %29, align 4, !tbaa !0 |
| 310 | | %31 = fpext float %30 to double |
| 311 | | %32 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([13 x i8]* @.str, i64 0, i64 0), double %22, double %25, double %28, double %31) nounwind |
| | 301 | br i1 %exitcond, label %21, label %8 |
| | 302 | |
| | 303 | ; <label>:21 ; preds = %8 |
| | 304 | %22 = load float* %.sub3, align 16, !tbaa !0 |
| | 305 | %23 = fpext float %22 to double |
| | 306 | %24 = getelementptr inbounds [40000 x float]* %3, i64 0, i64 1 |
| | 307 | %25 = load float* %24, align 4, !tbaa !0 |
| | 308 | %26 = fpext float %25 to double |
| | 309 | %27 = getelementptr inbounds [40000 x float]* %3, i64 0, i64 2 |
| | 310 | %28 = load float* %27, align 8, !tbaa !0 |
| | 311 | %29 = fpext float %28 to double |
| | 312 | %30 = getelementptr inbounds [40000 x float]* %3, i64 0, i64 3 |
| | 313 | %31 = load float* %30, align 4, !tbaa !0 |
| | 314 | %32 = fpext float %31 to double |
| | 315 | %33 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([13 x i8]* @.str2, i64 0, i64 0), double %23, double %26, double %29, double %32) nounwind |
| 325 | | |
| | 331 | ; ModuleID = '/tmp/webcompile/_15374_0.bc' |
| | 332 | target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" |
| | 333 | target triple = "x86_64-unknown-linux-gnu" |
| | 334 | |
| | 335 | @.str2 = private unnamed_addr constant [13 x i8] c"%f %f %f %f\0A\00" |
| | 336 | @str = internal constant [24 x i8] c"Entering initialization\00" |
| | 337 | @str3 = internal constant [18 x i8] c"Entering addition\00" |
| | 338 | |
| | 339 | define i32 @main() nounwind { |
| | 340 | ; <label>:0 |
| | 341 | %1 = alloca <128 x float>, align 16 |
| | 342 | %2 = alloca <128 x float>, align 16 |
| | 343 | %3 = alloca <128 x float>, align 16 |
| | 344 | %puts = call i32 @puts(i8* getelementptr inbounds ([24 x i8]* @str, i64 0, i64 0)) |
| | 345 | br label %4 |
| | 346 | |
| | 347 | ; <label>:4 ; preds = %4, %0 |
| | 348 | %indvar21 = phi i64 [ 0, %0 ], [ %indvar.next22, %4 ] |
| | 349 | %i.06 = trunc i64 %indvar21 to i32 |
| | 350 | %scevgep25 = getelementptr <128 x float>* %2, i64 0, i64 %indvar21 |
| | 351 | %scevgep26 = getelementptr <128 x float>* %1, i64 0, i64 %indvar21 |
| | 352 | %tmp27 = add i64 %indvar21, 128 |
| | 353 | %tmp28 = trunc i64 %tmp27 to i32 |
| | 354 | %5 = sitofp i32 %i.06 to float |
| | 355 | store float %5, float* %scevgep26, align 4, !tbaa !0 |
| | 356 | %6 = sitofp i32 %tmp28 to float |
| | 357 | store float %6, float* %scevgep25, align 4, !tbaa !0 |
| | 358 | %indvar.next22 = add i64 %indvar21, 1 |
| | 359 | %exitcond23 = icmp eq i64 %indvar.next22, 128 |
| | 360 | br i1 %exitcond23, label %7, label %4 |
| | 361 | |
| | 362 | ; <label>:7 ; preds = %4 |
| | 363 | %.sub3 = getelementptr inbounds <128 x float>* %3, i64 0, i64 0 |
| | 364 | %puts4 = call i32 @puts(i8* getelementptr inbounds ([18 x i8]* @str3, i64 0, i64 0)) |
| | 365 | br label %8 |
| | 366 | |
| | 367 | ; <label>:8 ; preds = %8, %7 |
| | 368 | ; %indvar = phi i64 [ 0, %7 ], [ %indvar.next, %8 ] |
| | 369 | |
| | 370 | |
| | 371 | ; %indvar.next = add i64 %indvar, 1 |
| | 372 | ; %exitcond = icmp eq i64 %indvar.next, 10000 |
| | 373 | ; br i1 %exitcond, label %9, label %8 |
| | 374 | br label %9 |
| | 375 | |
| | 376 | ; <label>:9 ; preds = %8 |
| | 377 | %xs = load <128 x float>* %1 |
| | 378 | %ys = load <128 x float>* %2 |
| | 379 | %zs = fadd <128 x float> %xs, %ys |
| | 380 | store <128 x float> %zs, <128 x float>* %3 |
| | 381 | |
| | 382 | %10 = load float* %.sub3, align 16, !tbaa !0 |
| | 383 | %11 = fpext float %10 to double |
| | 384 | %12 = getelementptr inbounds <128 x float>* %3, i64 0, i64 1 |
| | 385 | %13 = load float* %12, align 4, !tbaa !0 |
| | 386 | %14 = fpext float %13 to double |
| | 387 | %15 = getelementptr inbounds <128 x float>* %3, i64 0, i64 2 |
| | 388 | %16 = load float* %15, align 8, !tbaa !0 |
| | 389 | %17 = fpext float %16 to double |
| | 390 | %18 = getelementptr inbounds <128 x float>* %3, i64 0, i64 3 |
| | 391 | %19 = load float* %18, align 4, !tbaa !0 |
| | 392 | %20 = fpext float %19 to double |
| | 393 | %21 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([13 x i8]* @.str2, i64 0, i64 0), double %11, double %14, double %17, double %20) nounwind |
| | 394 | ret i32 0 |
| | 395 | } |
| | 396 | |
| | 397 | declare i32 @printf(i8* nocapture, ...) nounwind |
| | 398 | |
| | 399 | declare i32 @puts(i8* nocapture) nounwind |
| | 400 | |
| | 401 | !0 = metadata !{metadata !"float", metadata !1} |
| | 402 | !1 = metadata !{metadata !"omnipotent char", metadata !2} |
| | 403 | !2 = metadata !{metadata !"Simple C/C++ TBAA", null} |