246 lines
10 KiB
LLVM
246 lines
10 KiB
LLVM
@M = dso_local global i32 0
|
|
@L = dso_local global i32 0
|
|
@N = dso_local global i32 0
|
|
declare i32 @getint()
|
|
declare i32 @getch()
|
|
declare float @getfloat()
|
|
declare void @putint(i32 %p0)
|
|
declare void @putch(i32 %p0)
|
|
declare void @putfloat(float %p0)
|
|
declare i32 @getarray(i32* %p0)
|
|
declare i32 @getfarray(float* %p0)
|
|
declare void @putarray(i32 %p0, i32* %p1)
|
|
declare void @putfarray(i32 %p0, float* %p1)
|
|
declare void @_sysy_starttime(i32 %p0)
|
|
declare void @_sysy_stoptime(i32 %p0)
|
|
declare i32 @thrd_create(i32 %p0)
|
|
declare void @thrd_join()
|
|
declare void @putf()
|
|
declare void @llvm.memset.p0.i32(i32* %p0, i8 %p1, i32 %p2, i1 %p3)
|
|
define i32 @main() {
|
|
entry:
|
|
store i32 3, ptr @N
|
|
store i32 3, ptr @M
|
|
store i32 3, ptr @L
|
|
%alloca_269 = alloca [3 x float]
|
|
%alloca_270 = alloca [3 x float]
|
|
%alloca_271 = alloca [3 x float]
|
|
%alloca_272 = alloca [3 x float]
|
|
%alloca_273 = alloca [3 x float]
|
|
%alloca_274 = alloca [3 x float]
|
|
%alloca_275 = alloca [6 x float]
|
|
%alloca_276 = alloca [3 x float]
|
|
%alloca_277 = alloca [3 x float]
|
|
%getelementptr_663 = getelementptr [3 x float], ptr %alloca_269, i32 0
|
|
%getelementptr_664 = getelementptr [3 x float], ptr %alloca_271, i32 0
|
|
%getelementptr_665 = getelementptr [3 x float], ptr %alloca_274, i32 0
|
|
%getelementptr_666 = getelementptr [3 x float], ptr %alloca_273, i32 0
|
|
%getelementptr_667 = getelementptr [3 x float], ptr %alloca_272, i32 0
|
|
%getelementptr_668 = getelementptr [3 x float], ptr %alloca_270, i32 0
|
|
%call_669 = call i32 @thrd_create(i32 4)
|
|
%Mul_671 = mul i32 %call_669, 3
|
|
%SDiv_672 = sdiv i32 %Mul_671, 5
|
|
%Add_674 = add i32 %Mul_671, 3
|
|
%SDiv_675 = sdiv i32 %Add_674, 5
|
|
br label %cond0
|
|
|
|
cond0:
|
|
%phi_404 = phi i32 [%SDiv_672, %entry], [%Add_315, %body1]
|
|
%icmp_677 = icmp slt i32 %phi_404, %SDiv_675
|
|
br i1 %icmp_677, label %body1, label %final2_split2
|
|
|
|
body1:
|
|
%getelementptr_285 = getelementptr [3 x float], ptr %getelementptr_663, i32 0, i32 %phi_404
|
|
%itofp_287 = sitofp i32 %phi_404 to float
|
|
store float %itofp_287, ptr %getelementptr_285
|
|
%getelementptr_290 = getelementptr [3 x float], ptr %getelementptr_668, i32 0, i32 %phi_404
|
|
store float %itofp_287, ptr %getelementptr_290
|
|
%getelementptr_295 = getelementptr [3 x float], ptr %getelementptr_664, i32 0, i32 %phi_404
|
|
store float %itofp_287, ptr %getelementptr_295
|
|
%getelementptr_300 = getelementptr [3 x float], ptr %getelementptr_667, i32 0, i32 %phi_404
|
|
store float %itofp_287, ptr %getelementptr_300
|
|
%getelementptr_305 = getelementptr [3 x float], ptr %getelementptr_666, i32 0, i32 %phi_404
|
|
store float %itofp_287, ptr %getelementptr_305
|
|
%getelementptr_310 = getelementptr [3 x float], ptr %getelementptr_665, i32 0, i32 %phi_404
|
|
store float %itofp_287, ptr %getelementptr_310
|
|
%Add_315 = add i32 %phi_404, 1
|
|
br label %cond0
|
|
|
|
final2_split2:
|
|
call void @thrd_join()
|
|
%getelementptr_600 = getelementptr [3 x float], ptr %alloca_269, i32 0, i32 0
|
|
%getelementptr_601 = getelementptr [3 x float], ptr %alloca_272, i32 0, i32 0
|
|
%load_425 = load float, ptr %getelementptr_600
|
|
%load_426 = load float, ptr %getelementptr_601
|
|
%FMul_427 = fmul float %load_425, %load_426
|
|
%getelementptr_602 = getelementptr [3 x float], ptr %alloca_269, i32 0, i32 1
|
|
%getelementptr_603 = getelementptr [3 x float], ptr %alloca_273, i32 0, i32 0
|
|
%load_430 = load float, ptr %getelementptr_602
|
|
%load_431 = load float, ptr %getelementptr_603
|
|
%FMul_432 = fmul float %load_430, %load_431
|
|
%FAdd_433 = fadd float %FMul_427, %FMul_432
|
|
%getelementptr_604 = getelementptr [3 x float], ptr %alloca_269, i32 0, i32 2
|
|
%getelementptr_605 = getelementptr [3 x float], ptr %alloca_274, i32 0, i32 0
|
|
%load_436 = load float, ptr %getelementptr_604
|
|
%load_437 = load float, ptr %getelementptr_605
|
|
%FMul_438 = fmul float %load_436, %load_437
|
|
%FAdd_439 = fadd float %FAdd_433, %FMul_438
|
|
%getelementptr_606 = getelementptr [6 x float], ptr %alloca_275, i32 0, i32 0
|
|
store float %FAdd_439, ptr %getelementptr_606
|
|
%getelementptr_608 = getelementptr [3 x float], ptr %alloca_272, i32 0, i32 1
|
|
%load_445 = load float, ptr %getelementptr_608
|
|
%FMul_446 = fmul float %load_425, %load_445
|
|
%getelementptr_610 = getelementptr [3 x float], ptr %alloca_273, i32 0, i32 1
|
|
%load_450 = load float, ptr %getelementptr_610
|
|
%FMul_451 = fmul float %load_430, %load_450
|
|
%FAdd_452 = fadd float %FMul_446, %FMul_451
|
|
%getelementptr_612 = getelementptr [3 x float], ptr %alloca_274, i32 0, i32 1
|
|
%load_456 = load float, ptr %getelementptr_612
|
|
%FMul_457 = fmul float %load_436, %load_456
|
|
%FAdd_458 = fadd float %FAdd_452, %FMul_457
|
|
%getelementptr_613 = getelementptr [6 x float], ptr %alloca_275, i32 0, i32 1
|
|
store float %FAdd_458, ptr %getelementptr_613
|
|
%getelementptr_615 = getelementptr [3 x float], ptr %alloca_272, i32 0, i32 2
|
|
%load_464 = load float, ptr %getelementptr_615
|
|
%FMul_465 = fmul float %load_425, %load_464
|
|
%getelementptr_617 = getelementptr [3 x float], ptr %alloca_273, i32 0, i32 2
|
|
%load_469 = load float, ptr %getelementptr_617
|
|
%FMul_470 = fmul float %load_430, %load_469
|
|
%FAdd_471 = fadd float %FMul_465, %FMul_470
|
|
%getelementptr_619 = getelementptr [3 x float], ptr %alloca_274, i32 0, i32 2
|
|
%load_475 = load float, ptr %getelementptr_619
|
|
%FMul_476 = fmul float %load_436, %load_475
|
|
%FAdd_477 = fadd float %FAdd_471, %FMul_476
|
|
%getelementptr_620 = getelementptr [6 x float], ptr %alloca_275, i32 0, i32 2
|
|
store float %FAdd_477, ptr %getelementptr_620
|
|
%getelementptr_621 = getelementptr [3 x float], ptr %alloca_270, i32 0, i32 0
|
|
%load_482 = load float, ptr %getelementptr_621
|
|
%FMul_484 = fmul float %load_482, %load_426
|
|
%getelementptr_623 = getelementptr [3 x float], ptr %alloca_270, i32 0, i32 1
|
|
%load_487 = load float, ptr %getelementptr_623
|
|
%FMul_489 = fmul float %load_487, %load_431
|
|
%FAdd_490 = fadd float %FMul_484, %FMul_489
|
|
%getelementptr_625 = getelementptr [3 x float], ptr %alloca_270, i32 0, i32 2
|
|
%load_493 = load float, ptr %getelementptr_625
|
|
%FMul_495 = fmul float %load_493, %load_437
|
|
%FAdd_496 = fadd float %FAdd_490, %FMul_495
|
|
%getelementptr_627 = getelementptr [3 x float], ptr %alloca_276, i32 0, i32 0
|
|
store float %FAdd_496, ptr %getelementptr_627
|
|
%FMul_503 = fmul float %load_482, %load_445
|
|
%FMul_508 = fmul float %load_487, %load_450
|
|
%FAdd_509 = fadd float %FMul_503, %FMul_508
|
|
%FMul_514 = fmul float %load_493, %load_456
|
|
%FAdd_515 = fadd float %FAdd_509, %FMul_514
|
|
%getelementptr_634 = getelementptr [3 x float], ptr %alloca_276, i32 0, i32 1
|
|
store float %FAdd_515, ptr %getelementptr_634
|
|
%FMul_522 = fmul float %load_482, %load_464
|
|
%FMul_527 = fmul float %load_487, %load_469
|
|
%FAdd_528 = fadd float %FMul_522, %FMul_527
|
|
%FMul_533 = fmul float %load_493, %load_475
|
|
%FAdd_534 = fadd float %FAdd_528, %FMul_533
|
|
%getelementptr_641 = getelementptr [3 x float], ptr %alloca_276, i32 0, i32 2
|
|
store float %FAdd_534, ptr %getelementptr_641
|
|
%getelementptr_642 = getelementptr [3 x float], ptr %alloca_271, i32 0, i32 0
|
|
%load_539 = load float, ptr %getelementptr_642
|
|
%FMul_541 = fmul float %load_539, %load_426
|
|
%getelementptr_644 = getelementptr [3 x float], ptr %alloca_271, i32 0, i32 1
|
|
%load_544 = load float, ptr %getelementptr_644
|
|
%FMul_546 = fmul float %load_544, %load_431
|
|
%FAdd_547 = fadd float %FMul_541, %FMul_546
|
|
%getelementptr_646 = getelementptr [3 x float], ptr %alloca_271, i32 0, i32 2
|
|
%load_550 = load float, ptr %getelementptr_646
|
|
%FMul_552 = fmul float %load_550, %load_437
|
|
%FAdd_553 = fadd float %FAdd_547, %FMul_552
|
|
%getelementptr_648 = getelementptr [3 x float], ptr %alloca_277, i32 0, i32 0
|
|
store float %FAdd_553, ptr %getelementptr_648
|
|
%FMul_560 = fmul float %load_539, %load_445
|
|
%FMul_565 = fmul float %load_544, %load_450
|
|
%FAdd_566 = fadd float %FMul_560, %FMul_565
|
|
%FMul_571 = fmul float %load_550, %load_456
|
|
%FAdd_572 = fadd float %FAdd_566, %FMul_571
|
|
%getelementptr_655 = getelementptr [3 x float], ptr %alloca_277, i32 0, i32 1
|
|
store float %FAdd_572, ptr %getelementptr_655
|
|
%FMul_579 = fmul float %load_539, %load_464
|
|
%FMul_584 = fmul float %load_544, %load_469
|
|
%FAdd_585 = fadd float %FMul_579, %FMul_584
|
|
%FMul_590 = fmul float %load_550, %load_475
|
|
%FAdd_591 = fadd float %FAdd_585, %FMul_590
|
|
%getelementptr_662 = getelementptr [3 x float], ptr %alloca_277, i32 0, i32 2
|
|
store float %FAdd_591, ptr %getelementptr_662
|
|
%getelementptr_679 = getelementptr [6 x float], ptr %alloca_275, i32 0
|
|
%call_680 = call i32 @thrd_create(i32 4)
|
|
%Mul_682 = mul i32 %call_680, 3
|
|
%SDiv_683 = sdiv i32 %Mul_682, 5
|
|
%Add_685 = add i32 %Mul_682, 3
|
|
%SDiv_686 = sdiv i32 %Add_685, 5
|
|
br label %cond3
|
|
|
|
cond3:
|
|
%phi_405 = phi i32 [%SDiv_683, %final2_split2], [%Add_346, %body4]
|
|
%icmp_688 = icmp slt i32 %phi_405, %SDiv_686
|
|
br i1 %icmp_688, label %body4, label %final5
|
|
|
|
body4:
|
|
%getelementptr_339 = getelementptr [6 x float], ptr %getelementptr_679, i32 0, i32 %phi_405
|
|
%load_340 = load float, ptr %getelementptr_339
|
|
%fptoi_341 = fptosi float %load_340 to i32
|
|
call void @putint(i32 %fptoi_341)
|
|
%Add_346 = add i32 %phi_405, 1
|
|
br label %cond3
|
|
|
|
final5:
|
|
call void @thrd_join()
|
|
call void @putch(i32 10)
|
|
%getelementptr_690 = getelementptr [3 x float], ptr %alloca_276, i32 0
|
|
%call_691 = call i32 @thrd_create(i32 4)
|
|
%Mul_693 = mul i32 %call_691, 3
|
|
%SDiv_694 = sdiv i32 %Mul_693, 5
|
|
%Add_696 = add i32 %Mul_693, 3
|
|
%SDiv_697 = sdiv i32 %Add_696, 5
|
|
br label %cond6
|
|
|
|
cond6:
|
|
%phi_406 = phi i32 [%SDiv_694, %final5], [%Add_369, %body7]
|
|
%icmp_699 = icmp slt i32 %phi_406, %SDiv_697
|
|
br i1 %icmp_699, label %body7, label %final8
|
|
|
|
body7:
|
|
%getelementptr_362 = getelementptr [3 x float], ptr %getelementptr_690, i32 0, i32 %phi_406
|
|
%load_363 = load float, ptr %getelementptr_362
|
|
%fptoi_364 = fptosi float %load_363 to i32
|
|
call void @putint(i32 %fptoi_364)
|
|
%Add_369 = add i32 %phi_406, 1
|
|
br label %cond6
|
|
|
|
final8:
|
|
call void @thrd_join()
|
|
call void @putch(i32 10)
|
|
%getelementptr_701 = getelementptr [3 x float], ptr %alloca_277, i32 0
|
|
%call_702 = call i32 @thrd_create(i32 4)
|
|
%Mul_704 = mul i32 %call_702, 3
|
|
%SDiv_705 = sdiv i32 %Mul_704, 5
|
|
%Add_707 = add i32 %Mul_704, 3
|
|
%SDiv_708 = sdiv i32 %Add_707, 5
|
|
br label %cond9
|
|
|
|
cond9:
|
|
%phi_407 = phi i32 [%SDiv_705, %final8], [%Add_392, %body10]
|
|
%icmp_710 = icmp slt i32 %phi_407, %SDiv_708
|
|
br i1 %icmp_710, label %body10, label %exit
|
|
|
|
body10:
|
|
%getelementptr_385 = getelementptr [3 x float], ptr %getelementptr_701, i32 0, i32 %phi_407
|
|
%load_386 = load float, ptr %getelementptr_385
|
|
%fptoi_387 = fptosi float %load_386 to i32
|
|
call void @putint(i32 %fptoi_387)
|
|
%Add_392 = add i32 %phi_407, 1
|
|
br label %cond9
|
|
|
|
exit:
|
|
call void @thrd_join()
|
|
call void @putch(i32 10)
|
|
ret i32 0
|
|
|
|
|
|
}
|