diff --git a/quick_test/96_matrix_add_bad.ll b/quick_test/96_matrix_add_bad.ll new file mode 100644 index 0000000..05cfe19 --- /dev/null +++ b/quick_test/96_matrix_add_bad.ll @@ -0,0 +1,111 @@ +@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 @add(float* %a0, float* %a1, float* %a2, float* %b0, float* %b1, float* %b2, float* %c0, float* %c1, float* %c2) { +entry: +br label %cond0 + +cond0: +%phi_141 = phi i32 [0, %entry], [%Add_69, %body1] +%load_73 = load i32, ptr @M +%icmp_74 = icmp slt i32 %phi_141, %load_73 +br i1 %icmp_74, label %body1, label %exit + +body1: +%getelementptr_31 = getelementptr float, ptr %a0, i32 %phi_141 +%getelementptr_34 = getelementptr float, ptr %b0, i32 %phi_141 +%load_35 = load float, ptr %getelementptr_31 +%load_36 = load float, ptr %getelementptr_34 +%FAdd_37 = fadd float %load_35, %load_36 +%getelementptr_40 = getelementptr float, ptr %c0, i32 %phi_141 +store float %FAdd_37, ptr %getelementptr_40 +%getelementptr_44 = getelementptr float, ptr %a1, i32 %phi_141 +%getelementptr_47 = getelementptr float, ptr %b1, i32 %phi_141 +%load_48 = load float, ptr %getelementptr_44 +%load_49 = load float, ptr %getelementptr_47 +%FAdd_50 = fadd float %load_48, %load_49 +%getelementptr_53 = getelementptr float, ptr %c1, i32 %phi_141 +store float %FAdd_50, ptr %getelementptr_53 +%getelementptr_57 = getelementptr float, ptr %a2, i32 %phi_141 +%getelementptr_60 = getelementptr float, ptr %b2, i32 %phi_141 +%load_61 = load float, ptr %getelementptr_57 +%load_62 = load float, ptr %getelementptr_60 +%FAdd_63 = fadd float %load_61, %load_62 +%getelementptr_66 = getelementptr float, ptr %c2, i32 %phi_141 +store float %FAdd_63, ptr %getelementptr_66 +%Add_69 = add i32 %phi_141, 1 +br label %cond0 + +exit: +ret i32 0 + + +} +define i32 @main() { +entry: +store i32 3, ptr @N +store i32 3, ptr @M +store i32 3, ptr @L +%alloca_86 = alloca [3 x float] +%alloca_87 = alloca [3 x float] +%alloca_88 = alloca [3 x float] +%alloca_89 = alloca [3 x float] +%alloca_90 = alloca [3 x float] +%alloca_91 = alloca [3 x float] +%getelementptr_143 = getelementptr [3 x float], ptr %alloca_88, i32 0 +%getelementptr_144 = getelementptr [3 x float], ptr %alloca_91, i32 0 +%getelementptr_145 = getelementptr [3 x float], ptr %alloca_89, i32 0 +%getelementptr_146 = getelementptr [3 x float], ptr %alloca_86, i32 0 +%getelementptr_147 = getelementptr [3 x float], ptr %alloca_90, i32 0 +%getelementptr_148 = getelementptr [3 x float], ptr %alloca_87, i32 0 +%call_149 = call i32 @thrd_create(i32 4) +%Mul_151 = mul i32 %call_149, 3 +%SDiv_152 = sdiv i32 %Mul_151, 5 +%Add_154 = add i32 %Mul_151, 3 +%SDiv_155 = sdiv i32 %Add_154, 5 +br label %cond0 + +cond0: +%phi_142 = phi i32 [%SDiv_152, %entry], [%Add_132, %body1] +%icmp_157 = icmp slt i32 %phi_142, %SDiv_155 +br i1 %icmp_157, label %body1, label %exit + +body1: +%getelementptr_102 = getelementptr [3 x float], ptr %getelementptr_146, i32 0, i32 %phi_142 +%itofp_104 = sitofp i32 %phi_142 to float +store float %itofp_104, ptr %getelementptr_102 +%getelementptr_107 = getelementptr [3 x float], ptr %getelementptr_148, i32 0, i32 %phi_142 +store float %itofp_104, ptr %getelementptr_107 +%getelementptr_112 = getelementptr [3 x float], ptr %getelementptr_143, i32 0, i32 %phi_142 +store float %itofp_104, ptr %getelementptr_112 +%getelementptr_117 = getelementptr [3 x float], ptr %getelementptr_145, i32 0, i32 %phi_142 +store float %itofp_104, ptr %getelementptr_117 +%getelementptr_122 = getelementptr [3 x float], ptr %getelementptr_147, i32 0, i32 %phi_142 +store float %itofp_104, ptr %getelementptr_122 +%getelementptr_127 = getelementptr [3 x float], ptr %getelementptr_144, i32 0, i32 %phi_142 +store float %itofp_104, ptr %getelementptr_127 +%Add_132 = add i32 %phi_142, 1 +br label %cond0 + +exit: +call void @thrd_join() +ret i32 0 + + +} diff --git a/quick_test/96_matrix_add_bad.s b/quick_test/96_matrix_add_bad.s new file mode 100644 index 0000000..581d51e --- /dev/null +++ b/quick_test/96_matrix_add_bad.s @@ -0,0 +1,211 @@ +.file "test.c" +.option pic +.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" +.attribute unaligned_access, 0 +.attribute stack_align, 16 +.data +.align 2 +.globl M +.type M, @object +.size M, 4 +M: +.word 0 +.data +.align 2 +.globl L +.type L, @object +.size L, 4 +L: +.word 0 +.data +.align 2 +.globl N +.type N, @object +.size N, 4 +N: +.word 0 +.text +.align 3 +.globl add +.type add, @function +add: +.Ladd_entry: +mv t1,a5 +sd s0,-8(sp) +mv t2,a6 +mv t0,a4 +mv s0,sp +sd s3,-48(s0) +addi sp,sp,-48 +sd s2,-40(s0) +mv s3,a1 +li a1,0 +sd s4,-32(s0) +mv s2,a0 +mv s4,a2 +sd s1,-24(s0) +mv a2,a3 +ld a0,0(s0) +mv s1,a7 +j .Ladd_cond0 +.Ladd_cond0: +lla a4,M +lw a3,0(a4) +slt a4,a1,a3 +bge a1,a3,.Ladd_exit +j .Ladd_body1 +.Ladd_body1: +slli a3,a1,2 +add a4,s2,a3 +slli a3,a1,2 +flw ft0,0(a4) +add a5,a2,a3 +flw ft1,0(a5) +slli a3,a1,2 +add a4,t2,a3 +slli a3,a1,2 +fadd.s ft2,ft0,ft1 +fsw ft2,0(a4) +add a4,s3,a3 +slli a3,a1,2 +flw ft0,0(a4) +add a5,t0,a3 +slli a3,a1,2 +flw ft1,0(a5) +add a4,s1,a3 +slli a3,a1,2 +fadd.s ft2,ft0,ft1 +fsw ft2,0(a4) +add a4,s4,a3 +slli a3,a1,2 +flw ft0,0(a4) +add a5,t1,a3 +flw ft1,0(a5) +slli a3,a1,2 +add a4,a0,a3 +addiw a3,a1,1 +fadd.s ft2,ft0,ft1 +mv a1,a3 +fsw ft2,0(a4) +j .Ladd_cond0 +.Ladd_exit: +ld s1,-24(s0) +mv sp,s0 +ld s2,-40(s0) +addiw a0,zero,0 +ld s3,-48(s0) +ld s4,-32(s0) +ld s0,-8(s0) +ret +.size add, .-add +.text +.align 3 +.globl main +.type main, @function +main: +.Lmain_entry: +sd s0,-16(sp) +lla t1,N +li t0,3 +sw t0,0(t1) +mv s0,sp +addi a1,s0,-96 +addi t2,s0,-144 +li t0,3 +addi sp,sp,-144 +sd ra,-8(s0) +lla t1,M +sw t0,0(t1) +addi a0,s0,-108 +sd s1,112(sp) +li t0,3 +lla t1,L +sw t0,0(t1) +addi t0,zero,0 +slli t1,t0,2 +addi t0,s0,-84 +add s1,t0,t1 +addi t0,zero,0 +slli t1,t0,2 +addi t0,s0,-120 +add a2,t0,t1 +addi t0,zero,0 +slli t1,t0,2 +add t0,t2,t1 +addi t1,zero,0 +slli t2,t1,2 +add t1,a0,t2 +sd t1,104(sp) +addi t2,zero,0 +slli a0,t2,2 +add t2,a1,a0 +sd t2,96(sp) +addi a0,zero,0 +slli a3,a0,2 +addi a0,s0,-132 +add a1,a0,a3 +li a0,4 +sd a1,88(sp) +sd a2,80(sp) +sd t0,-72(s0) +call thrd_create +ld t1,104(sp) +mv a4,a0 +slliw a3,a4,0 +slliw a0,a4,2 +subw a4,a0,a3 +ld t2,96(sp) +li a0,5 +ld a2,80(sp) +div a5,a4,a0 +ld a1,88(sp) +ld t0,-72(s0) +addiw a6,a4,3 +li a3,5 +div a0,a6,a3 +mv a3,a5 +j .Lmain_cond0 +.Lmain_cond0: +slt a4,a3,a0 +bge a3,a0,.Lmain_exit +j .Lmain_body1 +.Lmain_body1: +addi a4,a3,0 +fcvt.s.w ft0,a3 +slli a5,a4,2 +add a4,t0,a5 +fsw ft0,0(a4) +addi a4,a3,0 +slli a5,a4,2 +add a4,t2,a5 +fsw ft0,0(a4) +addi a4,a3,0 +slli a5,a4,2 +add a4,a2,a5 +fsw ft0,0(a4) +addi a4,a3,0 +slli a5,a4,2 +add a4,a1,a5 +fsw ft0,0(a4) +addi a4,a3,0 +slli a5,a4,2 +add a4,s1,a5 +fsw ft0,0(a4) +addi a4,a3,0 +slli a5,a4,2 +add a4,t1,a5 +fsw ft0,0(a4) +addiw a4,a3,1 +mv a3,a4 +j .Lmain_cond0 +.Lmain_exit: +call thrd_join +ld ra,-8(s0) +addiw a0,zero,0 +ld s1,112(sp) +mv sp,s0 +ld s0,-16(s0) +ret +.size main, .-main +.ident "compiler: (visionfive2) 0.1.0" +.section .note.GNU-stack,"",@progbits diff --git a/quick_test/96_matrix_add_good.ll b/quick_test/96_matrix_add_good.ll new file mode 100644 index 0000000..2bca9c5 --- /dev/null +++ b/quick_test/96_matrix_add_good.ll @@ -0,0 +1,95 @@ +@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 @add(float* %a0, float* %a1, float* %a2, float* %b0, float* %b1, float* %b2, float* %c0, float* %c1, float* %c2) { +entry: +br label %cond0 + +cond0: +%phi_121 = phi i32 [0, %entry], [%Add_69, %body1] +%load_73 = load i32, ptr @M +%icmp_74 = icmp slt i32 %phi_121, %load_73 +br i1 %icmp_74, label %body1, label %exit + +body1: +%getelementptr_31 = getelementptr float, ptr %a0, i32 %phi_121 +%getelementptr_34 = getelementptr float, ptr %b0, i32 %phi_121 +%load_35 = load float, ptr %getelementptr_31 +%load_36 = load float, ptr %getelementptr_34 +%FAdd_37 = fadd float %load_35, %load_36 +%getelementptr_40 = getelementptr float, ptr %c0, i32 %phi_121 +store float %FAdd_37, ptr %getelementptr_40 +%getelementptr_44 = getelementptr float, ptr %a1, i32 %phi_121 +%getelementptr_47 = getelementptr float, ptr %b1, i32 %phi_121 +%load_48 = load float, ptr %getelementptr_44 +%load_49 = load float, ptr %getelementptr_47 +%FAdd_50 = fadd float %load_48, %load_49 +%getelementptr_53 = getelementptr float, ptr %c1, i32 %phi_121 +store float %FAdd_50, ptr %getelementptr_53 +%getelementptr_57 = getelementptr float, ptr %a2, i32 %phi_121 +%getelementptr_60 = getelementptr float, ptr %b2, i32 %phi_121 +%load_61 = load float, ptr %getelementptr_57 +%load_62 = load float, ptr %getelementptr_60 +%FAdd_63 = fadd float %load_61, %load_62 +%getelementptr_66 = getelementptr float, ptr %c2, i32 %phi_121 +store float %FAdd_63, ptr %getelementptr_66 +%Add_69 = add i32 %phi_121, 1 +br label %cond0 + +exit: +ret i32 0 + + +} +define i32 @main() { +entry: +store i32 3, ptr @N +store i32 3, ptr @M +store i32 3, ptr @L +%alloca_86 = alloca [3 x float] +%alloca_87 = alloca [3 x float] +%getelementptr_123 = getelementptr [3 x float], ptr %alloca_87, i32 0 +%getelementptr_124 = getelementptr [3 x float], ptr %alloca_86, i32 0 +%call_125 = call i32 @thrd_create(i32 4) +%Mul_127 = mul i32 %call_125, 3 +%SDiv_128 = sdiv i32 %Mul_127, 5 +%Add_130 = add i32 %Mul_127, 3 +%SDiv_131 = sdiv i32 %Add_130, 5 +br label %cond0 + +cond0: +%phi_122 = phi i32 [%SDiv_128, %entry], [%Add_112, %body1] +%icmp_133 = icmp slt i32 %phi_122, %SDiv_131 +br i1 %icmp_133, label %body1, label %exit + +body1: +%getelementptr_102 = getelementptr [3 x float], ptr %getelementptr_124, i32 0, i32 %phi_122 +%itofp_104 = sitofp i32 %phi_122 to float +store float %itofp_104, ptr %getelementptr_102 +%getelementptr_107 = getelementptr [3 x float], ptr %getelementptr_123, i32 0, i32 %phi_122 +store float %itofp_104, ptr %getelementptr_107 +%Add_112 = add i32 %phi_122, 1 +br label %cond0 + +exit: +call void @thrd_join() +ret i32 0 + + +} diff --git a/quick_test/96_matrix_add_good.s b/quick_test/96_matrix_add_good.s new file mode 100644 index 0000000..f3ee484 --- /dev/null +++ b/quick_test/96_matrix_add_good.s @@ -0,0 +1,173 @@ +.file "test.c" +.option pic +.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" +.attribute unaligned_access, 0 +.attribute stack_align, 16 +.data +.align 2 +.globl M +.type M, @object +.size M, 4 +M: +.word 0 +.data +.align 2 +.globl L +.type L, @object +.size L, 4 +L: +.word 0 +.data +.align 2 +.globl N +.type N, @object +.size N, 4 +N: +.word 0 +.text +.align 3 +.globl add +.type add, @function +add: +.Ladd_entry: +mv t0,a4 +mv t2,a6 +sd s0,-8(sp) +mv t1,a5 +mv s0,sp +addi sp,sp,-48 +sd s4,-48(s0) +mv s4,a2 +sd s2,-40(s0) +mv a2,a3 +sd s3,-32(s0) +mv s2,a0 +sd s1,-24(s0) +mv s3,a1 +li a1,0 +mv s1,a7 +ld a0,0(s0) +j .Ladd_cond0 +.Ladd_cond0: +lla a4,M +lw a3,0(a4) +slt a4,a1,a3 +bge a1,a3,.Ladd_exit +j .Ladd_body1 +.Ladd_body1: +slli a3,a1,2 +add a4,s2,a3 +flw ft0,0(a4) +slli a3,a1,2 +add a5,a2,a3 +flw ft1,0(a5) +slli a3,a1,2 +add a4,t2,a3 +slli a3,a1,2 +fadd.s ft2,ft0,ft1 +fsw ft2,0(a4) +add a4,s3,a3 +slli a3,a1,2 +flw ft0,0(a4) +add a5,t0,a3 +slli a3,a1,2 +flw ft1,0(a5) +add a4,s1,a3 +slli a3,a1,2 +fadd.s ft2,ft0,ft1 +fsw ft2,0(a4) +add a4,s4,a3 +slli a3,a1,2 +flw ft0,0(a4) +add a5,t1,a3 +slli a3,a1,2 +flw ft1,0(a5) +add a4,a0,a3 +addiw a3,a1,1 +fadd.s ft2,ft0,ft1 +mv a1,a3 +fsw ft2,0(a4) +j .Ladd_cond0 +.Ladd_exit: +ld s2,-40(s0) +mv sp,s0 +addiw a0,zero,0 +ld s1,-24(s0) +ld s4,-48(s0) +ld s3,-32(s0) +ld s0,-8(s0) +ret +.size add, .-add +.text +.align 3 +.globl main +.type main, @function +main: +.Lmain_entry: +lla t1,N +sd s0,-16(sp) +li a0,4 +li t0,3 +sw t0,0(t1) +mv s0,sp +sd ra,-8(s0) +addi sp,sp,-64 +lla t1,M +li t0,3 +sw t0,0(t1) +addi t2,s0,-64 +sd s1,40(sp) +li t0,3 +lla t1,L +sw t0,0(t1) +addi t0,zero,0 +slli t1,t0,2 +add t0,t2,t1 +addi t1,zero,0 +sd t0,-32(s0) +slli t2,t1,2 +addi t1,s0,-52 +add a1,t1,t2 +sd a1,-40(s0) +call thrd_create +ld t0,-32(s0) +mv t1,a0 +slliw t2,t1,2 +slliw s1,t1,0 +subw t1,t2,s1 +ld a1,-40(s0) +li s1,5 +div t2,t1,s1 +addiw s1,t1,3 +li t1,5 +div a0,s1,t1 +mv s1,t2 +j .Lmain_cond0 +.Lmain_cond0: +slt t1,s1,a0 +bge s1,a0,.Lmain_exit +j .Lmain_body1 +.Lmain_body1: +addi t1,s1,0 +fcvt.s.w ft0,s1 +slli t2,t1,2 +add t1,a1,t2 +fsw ft0,0(t1) +addi t1,s1,0 +slli t2,t1,2 +add t1,t0,t2 +fsw ft0,0(t1) +addiw t1,s1,1 +mv s1,t1 +j .Lmain_cond0 +.Lmain_exit: +call thrd_join +addiw a0,zero,0 +ld s1,40(sp) +ld ra,-8(s0) +mv sp,s0 +ld s0,-16(s0) +ret +.size main, .-main +.ident "compiler: (visionfive2) 0.1.0" +.section .note.GNU-stack,"",@progbits diff --git a/quick_test/asm/3.s b/quick_test/asm/3.s new file mode 100644 index 0000000..d709a62 --- /dev/null +++ b/quick_test/asm/3.s @@ -0,0 +1,79 @@ +.file "test.c" +.option pic +.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" +.attribute unaligned_access, 0 +.attribute stack_align, 16 +.bss +.align 3 +.globl A +.type A, @object +.size A, 36 +A: +.zero 36 +.bss +.align 3 +.globl B +.type B, @object +.size B, 36 +B: +.zero 36 +.text +.align 3 +.globl main +.type main, @function +main: +.Lmain_entry: +sd s0,-16(sp) +lla t0,A +addi t1,t0,0 +mv a0,t1 +mv s0,sp +addi sp,sp,-32 +sd ra,-8(s0) +sd s1,-32(s0) +call getarray +li a0,4 +call thrd_create +mv t0,a0 +slliw t1,t0,3 +li t0,5 +div t2,t1,t0 +addiw t0,t1,8 +li t1,5 +div s1,t0,t1 +mv t0,t2 +j .Lmain_cond0 +.Lmain_cond0: +slt t1,t0,s1 +bge t0,s1,.Lmain_exit +j .Lmain_body1 +.Lmain_body1: +addiw a0,t0,1 +addi t1,a0,0 +slli t0,t1,2 +lla t1,A +add t2,t1,t0 +addi t0,a0,0 +slli a1,t0,2 +lla t0,B +add t1,t0,a1 +lw t0,0(t2) +sw t0,0(t1) +mv t0,a0 +j .Lmain_cond0 +.Lmain_exit: +call thrd_join +lla t0,B +li a0,8 +addi t1,t0,0 +mv a1,t1 +call putarray +addiw a0,zero,0 +ld s1,-32(s0) +ld ra,-8(s0) +mv sp,s0 +ld s0,-16(s0) +ret +.size main, .-main +.ident "compiler: (visionfive2) 0.1.0" +.section .note.GNU-stack,"",@progbits diff --git a/quick_test/asm/6.s b/quick_test/asm/6.s new file mode 100644 index 0000000..8a1df83 --- /dev/null +++ b/quick_test/asm/6.s @@ -0,0 +1,60 @@ +.file "test.c" +.option pic +.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" +.attribute unaligned_access, 0 +.attribute stack_align, 16 +.data +.align 3 +.globl A +.type A, @object +.size A, 36 +A: +.word 0x1 +.word 0x1 +.word 0x4 +.word 0x5 +.word 0x1 +.word 0x4 +.zero 12 +.text +.align 3 +.globl main +.type main, @function +main: +.Lmain_exit: +sd s0,-16(sp) +lla t0,A +addi t2,t0,0 +li a0,4 +li t0,11 +mv s0,sp +addi sp,sp,-32 +sd ra,-8(s0) +sd s1,-24(s0) +sw t0,0(t2) +sd t2,-32(s0) +call thrd_create +ld t2,-32(s0) +mv t1,a0 +addi t0,t1,0 +slli t1,t0,2 +lla t0,A +add s1,t0,t1 +lw t0,0(s1) +slliw t1,t0,1 +sw t1,0(s1) +sd t2,-32(s0) +call thrd_join +ld t2,-32(s0) +li a0,8 +mv a1,t2 +call putarray +addiw a0,zero,0 +ld s1,-24(s0) +mv sp,s0 +ld ra,-8(s0) +ld s0,-16(s0) +ret +.size main, .-main +.ident "compiler: (visionfive2) 0.1.0" +.section .note.GNU-stack,"",@progbits diff --git a/quick_test/asm/7.s b/quick_test/asm/7.s new file mode 100644 index 0000000..3ddf963 --- /dev/null +++ b/quick_test/asm/7.s @@ -0,0 +1,68 @@ +.file "test.c" +.option pic +.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" +.attribute unaligned_access, 0 +.attribute stack_align, 16 +.data +.align 3 +.globl A +.type A, @object +.size A, 36 +A: +.word 0x1 +.word 0x1 +.word 0x4 +.word 0x5 +.word 0x1 +.word 0x4 +.zero 12 +.text +.align 3 +.globl main +.type main, @function +main: +.Lmain_exit: +li a0,4 +sd s0,-16(sp) +mv s0,sp +sd ra,-8(s0) +addi sp,sp,-32 +sd s1,-32(s0) +call thrd_create +mv t0,a0 +addi t1,t0,0 +slli t0,t1,2 +lla t1,A +add t2,t1,t0 +lw t0,0(t2) +slliw t1,t0,1 +sw t1,0(t2) +call thrd_join +li a0,8 +lla t0,A +addi s1,t0,0 +mv a1,s1 +call putarray +li a0,4 +call thrd_create +mv t1,a0 +addi t0,t1,0 +slli t1,t0,2 +lla t0,A +add t2,t0,t1 +lw t0,0(t2) +slliw t1,t0,1 +sw t1,0(t2) +call thrd_join +mv a1,s1 +li a0,8 +call putarray +addiw a0,zero,0 +mv sp,s0 +ld s1,-32(s0) +ld ra,-8(s0) +ld s0,-16(s0) +ret +.size main, .-main +.ident "compiler: (visionfive2) 0.1.0" +.section .note.GNU-stack,"",@progbits diff --git a/quick_test/asm/96_matrix_add.s b/quick_test/asm/96_matrix_add.s new file mode 100644 index 0000000..847aba9 --- /dev/null +++ b/quick_test/asm/96_matrix_add.s @@ -0,0 +1,211 @@ +.file "test.c" +.option pic +.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" +.attribute unaligned_access, 0 +.attribute stack_align, 16 +.data +.align 2 +.globl M +.type M, @object +.size M, 4 +M: +.word 0 +.data +.align 2 +.globl L +.type L, @object +.size L, 4 +L: +.word 0 +.data +.align 2 +.globl N +.type N, @object +.size N, 4 +N: +.word 0 +.text +.align 3 +.globl add +.type add, @function +add: +.Ladd_entry: +sd s0,-8(sp) +mv t1,a5 +mv t2,a6 +mv t0,a4 +mv s0,sp +sd s2,-48(s0) +addi sp,sp,-48 +sd s3,-40(s0) +mv s2,a0 +mv s3,a1 +sd s4,-32(s0) +li a1,0 +mv s4,a2 +sd s1,-24(s0) +mv a2,a3 +ld a0,0(s0) +mv s1,a7 +j .Ladd_cond0 +.Ladd_cond0: +lla a4,M +lw a3,0(a4) +slt a4,a1,a3 +bge a1,a3,.Ladd_exit +j .Ladd_body1 +.Ladd_body1: +slli a3,a1,2 +add a4,s2,a3 +flw ft0,0(a4) +slli a3,a1,2 +add a5,a2,a3 +slli a3,a1,2 +flw ft1,0(a5) +add a4,t2,a3 +slli a3,a1,2 +fadd.s ft2,ft0,ft1 +fsw ft2,0(a4) +add a4,s3,a3 +slli a3,a1,2 +flw ft0,0(a4) +add a5,t0,a3 +slli a3,a1,2 +flw ft1,0(a5) +add a4,s1,a3 +slli a3,a1,2 +fadd.s ft2,ft0,ft1 +fsw ft2,0(a4) +add a4,s4,a3 +slli a3,a1,2 +flw ft0,0(a4) +add a5,t1,a3 +flw ft1,0(a5) +slli a3,a1,2 +add a4,a0,a3 +addiw a3,a1,1 +mv a1,a3 +fadd.s ft2,ft0,ft1 +fsw ft2,0(a4) +j .Ladd_cond0 +.Ladd_exit: +addiw a0,zero,0 +ld s3,-40(s0) +mv sp,s0 +ld s2,-48(s0) +ld s4,-32(s0) +ld s1,-24(s0) +ld s0,-8(s0) +ret +.size add, .-add +.text +.align 3 +.globl main +.type main, @function +main: +.Lmain_entry: +li t0,3 +lla t1,N +sd s0,-16(sp) +sw t0,0(t1) +mv s0,sp +addi a1,s0,-144 +addi sp,sp,-144 +sd ra,-8(s0) +addi t2,s0,-108 +addi a0,s0,-132 +li t0,3 +lla t1,M +sw t0,0(t1) +sd s1,112(sp) +li t0,3 +lla t1,L +sw t0,0(t1) +addi t0,zero,0 +slli t1,t0,2 +addi t0,s0,-84 +add s1,t0,t1 +addi t0,zero,0 +slli t1,t0,2 +addi t0,s0,-96 +add a2,t0,t1 +addi t0,zero,0 +slli t1,t0,2 +add t0,t2,t1 +addi t1,zero,0 +slli t2,t1,2 +add t1,a0,t2 +sd t1,104(sp) +addi t2,zero,0 +slli a0,t2,2 +add t2,a1,a0 +sd t2,96(sp) +addi a0,zero,0 +slli a3,a0,2 +addi a0,s0,-120 +add a1,a0,a3 +li a0,4 +sd a1,88(sp) +sd a2,80(sp) +sd t0,-72(s0) +call thrd_create +ld t1,104(sp) +mv a4,a0 +slliw a0,a4,2 +ld a2,80(sp) +ld t0,-72(s0) +slliw a3,a4,0 +subw a4,a0,a3 +ld a1,88(sp) +li a0,5 +li a3,5 +div a5,a4,a0 +addiw a6,a4,3 +ld t2,96(sp) +div a0,a6,a3 +mv a3,a5 +j .Lmain_cond0 +.Lmain_cond0: +slt a4,a3,a0 +bge a3,a0,.Lmain_exit +j .Lmain_body1 +.Lmain_body1: +addi a4,a3,0 +fcvt.s.w ft0,a3 +slli a5,a4,2 +add a4,t1,a5 +fsw ft0,0(a4) +addi a4,a3,0 +slli a5,a4,2 +add a4,a1,a5 +fsw ft0,0(a4) +addi a4,a3,0 +slli a5,a4,2 +add a4,s1,a5 +fsw ft0,0(a4) +addi a4,a3,0 +slli a5,a4,2 +add a4,t0,a5 +fsw ft0,0(a4) +addi a4,a3,0 +slli a5,a4,2 +add a4,t2,a5 +fsw ft0,0(a4) +addi a4,a3,0 +slli a5,a4,2 +add a4,a2,a5 +fsw ft0,0(a4) +addiw a4,a3,1 +mv a3,a4 +j .Lmain_cond0 +.Lmain_exit: +call thrd_join +addiw a0,zero,0 +ld s1,112(sp) +ld ra,-8(s0) +mv sp,s0 +ld s0,-16(s0) +ret +.size main, .-main +.ident "compiler: (visionfive2) 0.1.0" +.section .note.GNU-stack,"",@progbits diff --git a/quick_test/asm/97_matrix_sub.s b/quick_test/asm/97_matrix_sub.s new file mode 100644 index 0000000..7cae8d1 --- /dev/null +++ b/quick_test/asm/97_matrix_sub.s @@ -0,0 +1,381 @@ +.file "test.c" +.option pic +.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" +.attribute unaligned_access, 0 +.attribute stack_align, 16 +.data +.align 2 +.globl N +.type N, @object +.size N, 4 +N: +.word 0 +.data +.align 2 +.globl M +.type M, @object +.size M, 4 +M: +.word 0 +.data +.align 2 +.globl L +.type L, @object +.size L, 4 +L: +.word 0 +.text +.align 3 +.globl main +.type main, @function +main: +.Lmain_entry: +sd s0,-16(sp) +li t0,3 +lla t1,N +sw t0,0(t1) +mv s0,sp +addi a0,s0,-128 +addi a2,s0,-224 +li t0,3 +addi t2,s0,-116 +addi sp,sp,-224 +lla t1,M +sw t0,0(t1) +sd ra,-8(s0) +lla t1,L +li t0,3 +sd s3,184(sp) +sw t0,0(t1) +sd s1,192(sp) +addi t0,zero,0 +slli t1,t0,2 +sd s2,200(sp) +addi s1,s0,-212 +addi t0,s0,-200 +add a1,t0,t1 +addi t0,zero,0 +slli t1,t0,2 +addi t0,s0,-140 +add a3,t0,t1 +addi t0,zero,0 +sd a3,152(sp) +slli t1,t0,2 +add t0,t2,t1 +addi t1,zero,0 +slli t2,t1,2 +add t1,s1,t2 +addi t2,zero,0 +sd t1,144(sp) +slli s1,t2,2 +add t2,a0,s1 +addi s1,zero,0 +sd t2,136(sp) +slli a0,s1,2 +add s1,a2,a0 +li a0,4 +sd a1,128(sp) +sd t0,120(sp) +call thrd_create +mv a2,a0 +ld a3,152(sp) +ld t0,120(sp) +slliw a4,a2,2 +ld t1,144(sp) +slliw a0,a2,0 +ld t2,136(sp) +subw a2,a4,a0 +addiw a4,a2,3 +li a0,5 +div a5,a2,a0 +ld a1,128(sp) +li a0,5 +div a2,a4,a0 +mv a0,a5 +j .Lmain_cond0 +.Lmain_cond0: +slt a4,a0,a2 +bge a0,a2,.Lmain_entry_inline0 +j .Lmain_body1 +.Lmain_body1: +fcvt.s.w ft0,a0 +addi a5,a0,0 +slli a4,a5,2 +add a5,t0,a4 +addi a4,a0,0 +fsw ft0,0(a5) +slli a5,a4,2 +add a4,s1,a5 +addi a5,a0,0 +fsw ft0,0(a4) +slli a4,a5,2 +add a5,t1,a4 +fsw ft0,0(a5) +addi a4,a0,0 +slli a5,a4,2 +add a4,a3,a5 +addi a5,a0,0 +fsw ft0,0(a4) +slli a4,a5,2 +add a5,t2,a4 +addi a4,a0,0 +fsw ft0,0(a5) +slli a5,a4,2 +add a4,a1,a5 +fsw ft0,0(a4) +addiw a4,a0,1 +mv a0,a4 +j .Lmain_cond0 +.Lmain_entry_inline0: +call thrd_join +addi s1,s0,-200 +addi t1,zero,0 +slli t0,t1,2 +addi t2,s0,-224 +add t1,t2,t0 +addi a0,s0,-140 +addi t2,zero,0 +slli t0,t2,2 +add t2,s1,t0 +addi s1,zero,0 +slli t0,s1,2 +add s1,a0,t0 +addi a0,zero,0 +slli t0,a0,2 +addi a0,s0,-152 +add a1,a0,t0 +addi t0,zero,0 +slli a0,t0,2 +addi t0,s0,-188 +add a2,t0,a0 +addi t0,zero,0 +slli a0,t0,2 +addi t0,s0,-128 +add a3,t0,a0 +addi t0,zero,0 +sd a3,176(sp) +slli a0,t0,2 +addi t0,s0,-116 +add a4,t0,a0 +sd t1,168(sp) +addi t0,zero,0 +slli a0,t0,2 +addi t0,s0,-212 +sd a4,160(sp) +add a5,t0,a0 +addi t0,zero,0 +slli a0,t0,2 +sd t2,152(sp) +addi t0,s0,-176 +add a6,t0,a0 +li a0,4 +sd a1,144(sp) +sd a5,136(sp) +sd a2,128(sp) +sd a6,120(sp) +call thrd_create +ld t1,168(sp) +mv a7,a0 +ld a3,176(sp) +slliw t0,a7,0 +ld t2,152(sp) +slliw a0,a7,2 +ld a5,136(sp) +subw s2,a0,t0 +ld a4,160(sp) +addiw s3,s2,3 +ld a2,128(sp) +li t0,5 +div a7,s2,t0 +ld a1,144(sp) +ld a6,120(sp) +li t0,5 +div a0,s3,t0 +mv t0,a7 +j .Lmain_cond0_inline1 +.Lmain_cond0_inline1: +slt a7,t0,a0 +bge t0,a0,.Lmain_final2_split5 +j .Lmain_body1_inline4 +.Lmain_body1_inline4: +addi s3,t0,0 +addi a7,t0,0 +slli s2,a7,2 +add a7,a4,s2 +flw ft0,0(a7) +slli s2,s3,2 +add s3,s1,s2 +flw ft2,0(s3) +addi a7,t0,0 +slli s2,a7,2 +add a7,a6,s2 +fsub.s ft1,ft0,ft2 +addi s2,t0,0 +fsw ft1,0(a7) +slli a7,s2,2 +add s2,t1,a7 +flw ft1,0(s2) +addi a7,t0,0 +slli s3,a7,2 +add a7,a3,s3 +flw ft0,0(a7) +fsub.s ft2,ft1,ft0 +addi a7,t0,0 +slli s2,a7,2 +add a7,a2,s2 +addi s2,t0,0 +fsw ft2,0(a7) +slli a7,s2,2 +add s2,a5,a7 +flw ft0,0(s2) +addi a7,t0,0 +slli s3,a7,2 +add a7,t2,s3 +flw ft2,0(a7) +addi s2,t0,0 +fsub.s ft1,ft0,ft2 +slli a7,s2,2 +add s2,a1,a7 +addiw a7,t0,1 +mv t0,a7 +fsw ft1,0(s2) +j .Lmain_cond0_inline1 +.Lmain_final2_split5: +call thrd_join +addi t1,zero,0 +li a0,4 +slli t0,t1,2 +addi t1,s0,-176 +add t2,t1,t0 +sd t2,120(sp) +call thrd_create +ld t2,120(sp) +mv t1,a0 +slliw t0,t1,0 +slliw s1,t1,2 +subw t1,s1,t0 +li t0,5 +addiw s1,t1,3 +div a0,t1,t0 +li t1,5 +div t0,s1,t1 +mv s1,a0 +j .Lmain_cond3 +.Lmain_cond3: +slt t1,s1,t0 +bge s1,t0,.Lmain_final5 +j .Lmain_body4 +.Lmain_body4: +addi a0,s1,0 +slli t1,a0,2 +add a0,t2,t1 +flw ft0,0(a0) +sd t0,128(sp) +fcvt.w.s t1,ft0,rtz +sd t2,120(sp) +mv a0,t1 +call putint +ld t2,120(sp) +addiw t1,s1,1 +ld t0,128(sp) +mv s1,t1 +j .Lmain_cond3 +.Lmain_final5: +call thrd_join +li a0,10 +call putch +li a0,4 +addi t0,zero,0 +slli t1,t0,2 +addi t0,s0,-188 +add s1,t0,t1 +call thrd_create +mv t1,a0 +slliw t0,t1,2 +slliw t2,t1,0 +subw a0,t0,t2 +li t0,5 +addiw a1,a0,3 +div t1,a0,t0 +li t2,5 +div t0,a1,t2 +mv t2,t1 +j .Lmain_cond6 +.Lmain_cond6: +slt t1,t2,t0 +bge t2,t0,.Lmain_final8 +j .Lmain_body7 +.Lmain_body7: +addi a0,t2,0 +slli t1,a0,2 +add a0,s1,t1 +flw ft0,0(a0) +fcvt.w.s t1,ft0,rtz +sd t0,128(sp) +sd t2,120(sp) +mv a0,t1 +call putint +ld t0,128(sp) +ld t2,120(sp) +addiw t1,t2,1 +mv t2,t1 +j .Lmain_cond6 +.Lmain_final8: +call thrd_join +li a0,10 +call putch +addi t1,zero,0 +li a0,4 +slli t0,t1,2 +addi t2,s0,-152 +add t1,t2,t0 +sd t1,120(sp) +call thrd_create +ld t1,120(sp) +mv t2,a0 +slliw s1,t2,0 +slliw t0,t2,2 +subw t2,t0,s1 +li t0,5 +div s1,t2,t0 +addiw t0,t2,3 +li t2,5 +div a1,t0,t2 +mv t0,s1 +j .Lmain_cond9 +.Lmain_cond9: +slt t2,t0,a1 +bge t0,a1,.Lmain_exit +j .Lmain_body10 +.Lmain_body10: +addi t2,t0,0 +slli s1,t2,2 +add t2,t1,s1 +flw ft0,0(t2) +fcvt.w.s t2,ft0,rtz +sd t1,136(sp) +sd t0,128(sp) +mv a0,t2 +sd a1,120(sp) +call putint +ld a1,120(sp) +ld t1,136(sp) +ld t0,128(sp) +addiw t2,t0,1 +mv t0,t2 +j .Lmain_cond9 +.Lmain_exit: +call thrd_join +li a0,10 +call putch +ld s1,192(sp) +addiw a0,zero,0 +ld s3,184(sp) +ld s2,200(sp) +ld ra,-8(s0) +mv sp,s0 +ld s0,-16(s0) +ret +.size main, .-main +.ident "compiler: (visionfive2) 0.1.0" +.section .note.GNU-stack,"",@progbits diff --git a/quick_test/asm/98_matrix_mul.s b/quick_test/asm/98_matrix_mul.s new file mode 100644 index 0000000..0bd967f --- /dev/null +++ b/quick_test/asm/98_matrix_mul.s @@ -0,0 +1,366 @@ +.file "test.c" +.option pic +.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" +.attribute unaligned_access, 0 +.attribute stack_align, 16 +.data +.align 2 +.globl M +.type M, @object +.size M, 4 +M: +.word 0 +.data +.align 2 +.globl L +.type L, @object +.size L, 4 +L: +.word 0 +.data +.align 2 +.globl N +.type N, @object +.size N, 4 +N: +.word 0 +.text +.align 3 +.globl main +.type main, @function +main: +.Lmain_entry: +lla t1,N +sd s0,-16(sp) +li t0,3 +sw t0,0(t1) +mv s0,sp +sd ra,-8(s0) +addi a2,s0,-196 +addi sp,sp,-208 +lla t1,M +addi a0,sp,108 +li t0,3 +fsd fs0,160(sp) +addi t2,s0,-172 +sw t0,0(t1) +sd s1,168(sp) +li t0,3 +lla t1,L +sw t0,0(t1) +addi s1,s0,-208 +fsd fs1,176(sp) +addi t0,zero,0 +slli t1,t0,2 +addi t0,s0,-136 +add a1,t0,t1 +addi t0,zero,0 +slli t1,t0,2 +addi t0,s0,-184 +add a3,t0,t1 +addi t0,zero,0 +sd a3,152(sp) +slli t1,t0,2 +add t0,t2,t1 +addi t1,zero,0 +slli t2,t1,2 +add t1,s1,t2 +addi t2,zero,0 +sd t1,144(sp) +slli s1,t2,2 +add t2,a0,s1 +addi s1,zero,0 +sd t2,136(sp) +slli a0,s1,2 +add s1,a2,a0 +li a0,4 +sd a1,128(sp) +sd t0,120(sp) +call thrd_create +ld a1,128(sp) +mv a2,a0 +ld t2,136(sp) +slliw a0,a2,2 +ld a3,152(sp) +slliw a4,a2,0 +ld t1,144(sp) +subw a2,a0,a4 +li a0,5 +ld t0,120(sp) +div a5,a2,a0 +li a4,5 +addiw a0,a2,3 +div a2,a0,a4 +mv a0,a5 +j .Lmain_cond0 +.Lmain_cond0: +slt a4,a0,a2 +bge a0,a2,.Lmain_final2_split2 +j .Lmain_body1 +.Lmain_body1: +fcvt.s.w ft0,a0 +addi a5,a0,0 +slli a4,a5,2 +add a5,a1,a4 +addi a4,a0,0 +fsw ft0,0(a5) +slli a5,a4,2 +add a4,s1,a5 +fsw ft0,0(a4) +addi a5,a0,0 +slli a4,a5,2 +add a5,a3,a4 +addi a4,a0,0 +fsw ft0,0(a5) +slli a5,a4,2 +add a4,t2,a5 +fsw ft0,0(a4) +addi a5,a0,0 +slli a4,a5,2 +add a5,t1,a4 +fsw ft0,0(a5) +addi a4,a0,0 +slli a5,a4,2 +add a4,t0,a5 +fsw ft0,0(a4) +addiw a4,a0,1 +mv a0,a4 +j .Lmain_cond0 +.Lmain_final2_split2: +call thrd_join +addi t1,sp,108 +li a0,4 +flw ft4,0(t1) +addi t0,s0,-136 +flw ft3,0(t0) +addi t1,s0,-208 +flw ft0,0(t1) +addi t0,s0,-136 +flw fa0,4(t0) +fmul.s ft1,ft3,ft4 +addi t1,s0,-136 +flw fa1,8(t1) +addi t0,s0,-172 +fmul.s ft5,fa0,ft0 +fadd.s ft2,ft1,ft5 +flw ft1,0(t0) +addi t0,s0,-160 +fmul.s ft6,fa1,ft1 +fadd.s ft5,ft2,ft6 +fsw ft5,0(t0) +addi t0,sp,108 +flw ft5,4(t0) +addi t0,s0,-208 +fmul.s ft2,ft3,ft5 +flw ft6,4(t0) +addi t0,s0,-172 +fmul.s ft7,fa0,ft6 +fadd.s fs0,ft2,ft7 +flw ft2,4(t0) +fmul.s fs1,fa1,ft2 +addi t0,s0,-160 +fadd.s ft7,fs0,fs1 +fsw ft7,4(t0) +addi t0,sp,108 +flw ft7,8(t0) +addi t0,s0,-208 +fmul.s fs1,ft3,ft7 +flw fs0,8(t0) +addi t0,s0,-172 +fmul.s ft3,fa0,fs0 +fadd.s fa0,fs1,ft3 +flw ft3,8(t0) +addi t0,s0,-160 +fmul.s fa2,fa1,ft3 +fadd.s fs1,fa0,fa2 +fsw fs1,8(t0) +addi t0,s0,-196 +flw fs1,0(t0) +addi t0,s0,-196 +fmul.s fa2,fs1,ft4 +flw fa0,4(t0) +addi t0,s0,-196 +fmul.s fa3,fa0,ft0 +fadd.s fa1,fa2,fa3 +flw fa3,8(t0) +addi t0,s0,-124 +fmul.s fa2,fa3,ft1 +fadd.s fa4,fa1,fa2 +fsw fa4,0(t0) +fmul.s fa1,fs1,ft5 +addi t0,s0,-124 +fmul.s fa4,fa0,ft6 +fadd.s fa2,fa1,fa4 +fmul.s fa4,fa3,ft2 +fadd.s fa1,fa2,fa4 +fsw fa1,4(t0) +addi t0,s0,-124 +fmul.s fa1,fs1,ft7 +fmul.s fs1,fa0,fs0 +fadd.s fa0,fa1,fs1 +fmul.s fs1,fa3,ft3 +fadd.s fa1,fa0,fs1 +fsw fa1,8(t0) +addi t0,s0,-184 +flw fs1,0(t0) +addi t0,s0,-184 +fmul.s fa0,fs1,ft4 +flw ft4,4(t0) +fmul.s fa1,ft4,ft0 +addi t0,s0,-184 +fadd.s ft0,fa0,fa1 +flw fa1,8(t0) +addi t0,s0,-112 +fmul.s fa0,fa1,ft1 +fadd.s ft1,ft0,fa0 +fmul.s ft0,fs1,ft5 +fsw ft1,0(t0) +addi t0,s0,-112 +fmul.s ft5,ft4,ft6 +fadd.s ft1,ft0,ft5 +fmul.s ft5,fa1,ft2 +fmul.s ft2,ft4,fs0 +fadd.s ft0,ft1,ft5 +fsw ft0,4(t0) +addi t0,s0,-112 +fmul.s ft0,fs1,ft7 +fadd.s ft1,ft0,ft2 +fmul.s ft2,fa1,ft3 +fadd.s ft0,ft1,ft2 +fsw ft0,8(t0) +addi t0,zero,0 +slli t1,t0,2 +addi t0,s0,-160 +add s1,t0,t1 +call thrd_create +mv t1,a0 +slliw t2,t1,0 +slliw t0,t1,2 +subw a0,t0,t2 +li t0,5 +addiw a1,a0,3 +div t1,a0,t0 +li t0,5 +div t2,a1,t0 +mv a1,t1 +j .Lmain_cond3 +.Lmain_cond3: +slt t0,a1,t2 +bge a1,t2,.Lmain_final5 +j .Lmain_body4 +.Lmain_body4: +addi t1,a1,0 +slli t0,t1,2 +add t1,s1,t0 +flw ft0,0(t1) +fcvt.w.s t0,ft0,rtz +sd t2,128(sp) +sd a1,120(sp) +mv a0,t0 +call putint +ld t2,128(sp) +ld a1,120(sp) +addiw t0,a1,1 +mv a1,t0 +j .Lmain_cond3 +.Lmain_final5: +call thrd_join +li a0,10 +call putch +addi t2,s0,-124 +addi t1,zero,0 +li a0,4 +slli t0,t1,2 +add t1,t2,t0 +sd t1,120(sp) +call thrd_create +mv t0,a0 +ld t1,120(sp) +slliw s1,t0,0 +slliw t2,t0,2 +subw t0,t2,s1 +li t2,5 +div s1,t0,t2 +addiw t2,t0,3 +li t0,5 +div a1,t2,t0 +mv t0,s1 +j .Lmain_cond6 +.Lmain_cond6: +slt t2,t0,a1 +bge t0,a1,.Lmain_final8 +j .Lmain_body7 +.Lmain_body7: +addi t2,t0,0 +slli s1,t2,2 +add t2,t1,s1 +flw ft0,0(t2) +sd t1,136(sp) +fcvt.w.s t2,ft0,rtz +sd t0,128(sp) +mv a0,t2 +sd a1,120(sp) +call putint +ld a1,120(sp) +ld t1,136(sp) +ld t0,128(sp) +addiw t2,t0,1 +mv t0,t2 +j .Lmain_cond6 +.Lmain_final8: +call thrd_join +li a0,10 +call putch +li a0,4 +addi t1,zero,0 +slli t0,t1,2 +addi t1,s0,-112 +add t2,t1,t0 +sd t2,120(sp) +call thrd_create +ld t2,120(sp) +mv s1,a0 +slliw t0,s1,2 +slliw t1,s1,0 +subw s1,t0,t1 +li t1,5 +addiw a0,s1,3 +div t0,s1,t1 +li s1,5 +div t1,a0,s1 +mv s1,t0 +j .Lmain_cond9 +.Lmain_cond9: +slt t0,s1,t1 +bge s1,t1,.Lmain_exit +j .Lmain_body10 +.Lmain_body10: +addi a0,s1,0 +slli t0,a0,2 +add a0,t2,t0 +flw ft0,0(a0) +fcvt.w.s t0,ft0,rtz +sd t1,128(sp) +sd t2,120(sp) +mv a0,t0 +call putint +ld t1,128(sp) +addiw t0,s1,1 +ld t2,120(sp) +mv s1,t0 +j .Lmain_cond9 +.Lmain_exit: +call thrd_join +li a0,10 +call putch +ld ra,-8(s0) +addiw a0,zero,0 +fld fs0,160(sp) +fld fs1,176(sp) +ld s1,168(sp) +mv sp,s0 +ld s0,-16(s0) +ret +.size main, .-main +.ident "compiler: (visionfive2) 0.1.0" +.section .note.GNU-stack,"",@progbits diff --git a/quick_test/asm/99_matrix_tran.s b/quick_test/asm/99_matrix_tran.s new file mode 100644 index 0000000..cdc4fe6 --- /dev/null +++ b/quick_test/asm/99_matrix_tran.s @@ -0,0 +1,301 @@ +.file "test.c" +.option pic +.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" +.attribute unaligned_access, 0 +.attribute stack_align, 16 +.data +.align 2 +.globl M +.type M, @object +.size M, 4 +M: +.word 0 +.data +.align 2 +.globl L +.type L, @object +.size L, 4 +L: +.word 0 +.data +.align 2 +.globl N +.type N, @object +.size N, 4 +N: +.word 0 +.text +.align 3 +.globl main +.type main, @function +main: +.Lmain_entry: +lla t1,N +li t0,3 +sd s0,-16(sp) +sw t0,0(t1) +mv s0,sp +li t0,3 +addi a0,s0,-132 +addi t2,s0,-108 +lla t1,M +sw t0,0(t1) +addi sp,sp,-192 +sd ra,-8(s0) +addi a2,s0,-144 +li t0,3 +lla t1,L +sw t0,0(t1) +sd s1,160(sp) +addi t0,zero,0 +slli t1,t0,2 +addi s1,s0,-180 +addi t0,s0,-120 +add a1,t0,t1 +addi t0,zero,0 +slli t1,t0,2 +addi t0,s0,-192 +add a3,t0,t1 +addi t0,zero,0 +sd a3,152(sp) +slli t1,t0,2 +add t0,t2,t1 +addi t1,zero,0 +slli t2,t1,2 +add t1,s1,t2 +sd t1,144(sp) +addi t2,zero,0 +slli s1,t2,2 +add t2,a0,s1 +addi s1,zero,0 +sd t2,136(sp) +slli a0,s1,2 +add s1,a2,a0 +sd a1,128(sp) +li a0,4 +sd t0,120(sp) +call thrd_create +ld t1,144(sp) +mv a2,a0 +ld a1,128(sp) +slliw a0,a2,0 +ld t2,136(sp) +slliw a4,a2,2 +subw a2,a4,a0 +ld a3,152(sp) +li a0,5 +ld t0,120(sp) +addiw a4,a2,3 +div a5,a2,a0 +li a0,5 +div a2,a4,a0 +mv a0,a5 +j .Lmain_cond0 +.Lmain_cond0: +slt a4,a0,a2 +bge a0,a2,.Lmain_final2_split2 +j .Lmain_body1 +.Lmain_body1: +fcvt.s.w ft0,a0 +addi a5,a0,0 +slli a4,a5,2 +add a5,t1,a4 +addi a4,a0,0 +fsw ft0,0(a5) +slli a5,a4,2 +add a4,a3,a5 +fsw ft0,0(a4) +addi a5,a0,0 +slli a4,a5,2 +add a5,t0,a4 +fsw ft0,0(a5) +addi a4,a0,0 +slli a5,a4,2 +add a4,t2,a5 +fsw ft0,0(a4) +addi a5,a0,0 +slli a4,a5,2 +add a5,s1,a4 +fsw ft0,0(a5) +addi a4,a0,0 +slli a5,a4,2 +add a4,a1,a5 +fsw ft0,0(a4) +addiw a4,a0,1 +mv a0,a4 +j .Lmain_cond0 +.Lmain_final2_split2: +call thrd_join +addi t2,s0,-168 +addi t1,s0,-96 +addi t0,s0,-108 +li a0,4 +flw ft0,4(t0) +addi t0,s0,-192 +fsw ft0,8(t1) +flw ft0,8(t0) +addi t1,sp,108 +fsw ft0,4(t1) +addi t0,s0,-168 +addi t1,s0,-192 +flw ft0,0(t1) +fsw ft0,4(t0) +addi t1,s0,-108 +addi t0,s0,-168 +flw ft0,0(t1) +fsw ft0,8(t0) +addi t1,s0,-96 +addi t0,s0,-180 +flw ft0,4(t0) +addi t0,s0,-180 +fsw ft0,0(t1) +addi t1,sp,108 +flw ft0,8(t0) +fsw ft0,0(t1) +addi t0,s0,-96 +addi t1,s0,-192 +flw ft0,4(t1) +fsw ft0,4(t0) +addi t1,s0,-108 +addi t0,sp,108 +flw ft0,8(t1) +addi t1,s0,-168 +fsw ft0,8(t0) +addi t0,s0,-180 +flw ft0,0(t0) +fsw ft0,0(t1) +addi t1,zero,0 +slli t0,t1,2 +add t1,t2,t0 +sd t1,120(sp) +call thrd_create +ld t1,120(sp) +mv t2,a0 +slliw s1,t2,2 +slliw t0,t2,0 +subw t2,s1,t0 +addiw s1,t2,3 +li t0,5 +div a0,t2,t0 +li t0,5 +div a1,s1,t0 +mv t0,a0 +j .Lmain_cond3 +.Lmain_cond3: +slt t2,t0,a1 +bge t0,a1,.Lmain_final5 +j .Lmain_body4 +.Lmain_body4: +addi t2,t0,0 +slli s1,t2,2 +add t2,t1,s1 +flw ft0,0(t2) +fcvt.w.s t2,ft0,rtz +sd t1,136(sp) +sd t0,128(sp) +mv a0,t2 +sd a1,120(sp) +call putint +ld t1,136(sp) +ld t0,128(sp) +ld a1,120(sp) +addiw t2,t0,1 +mv t0,t2 +j .Lmain_cond3 +.Lmain_final5: +call thrd_join +li a0,10 +call putch +li a0,4 +addi t0,zero,0 +slli t1,t0,2 +addi t0,s0,-96 +add s1,t0,t1 +call thrd_create +mv t0,a0 +slliw a0,t0,2 +slliw t1,t0,0 +subw t2,a0,t1 +addiw a0,t2,3 +li t1,5 +div t0,t2,t1 +li t2,5 +div t1,a0,t2 +mv t2,t0 +j .Lmain_cond6 +.Lmain_cond6: +slt t0,t2,t1 +bge t2,t1,.Lmain_final8 +j .Lmain_body7 +.Lmain_body7: +addi a0,t2,0 +slli t0,a0,2 +add a0,s1,t0 +flw ft0,0(a0) +sd t1,128(sp) +fcvt.w.s t0,ft0,rtz +sd t2,120(sp) +mv a0,t0 +call putint +ld t1,128(sp) +ld t2,120(sp) +addiw t0,t2,1 +mv t2,t0 +j .Lmain_cond6 +.Lmain_final8: +call thrd_join +li a0,10 +call putch +addi t0,zero,0 +li a0,4 +slli t1,t0,2 +addi t0,sp,108 +add a1,t0,t1 +sd a1,120(sp) +call thrd_create +ld a1,120(sp) +mv t1,a0 +slliw t0,t1,0 +slliw t2,t1,2 +subw s1,t2,t0 +li t0,5 +addiw a0,s1,3 +div t1,s1,t0 +li t0,5 +div t2,a0,t0 +mv t0,t1 +j .Lmain_cond9 +.Lmain_cond9: +slt t1,t0,t2 +bge t0,t2,.Lmain_exit +j .Lmain_body10 +.Lmain_body10: +addi t1,t0,0 +slli s1,t1,2 +add t1,a1,s1 +flw ft0,0(t1) +fcvt.w.s t1,ft0,rtz +sd t0,136(sp) +sd t2,128(sp) +mv a0,t1 +sd a1,120(sp) +call putint +ld a1,120(sp) +ld t2,128(sp) +ld t0,136(sp) +addiw t1,t0,1 +mv t0,t1 +j .Lmain_cond9 +.Lmain_exit: +call thrd_join +li a0,10 +call putch +ld ra,-8(s0) +addiw a0,zero,0 +ld s1,160(sp) +mv sp,s0 +ld s0,-16(s0) +ret +.size main, .-main +.ident "compiler: (visionfive2) 0.1.0" +.section .note.GNU-stack,"",@progbits diff --git a/quick_test/asm2bin.toml b/quick_test/asm2bin.toml new file mode 100644 index 0000000..e20cc21 --- /dev/null +++ b/quick_test/asm2bin.toml @@ -0,0 +1,72 @@ +start_time = "2024-08-19 10:48:36.108676300 +08:00" +end_time = "2024-08-19 10:48:36.424910880 +08:00" +time_cost = "PT0.31623458S" +all_success = true +success_num = 7 +failed_num = 0 +total_num = 7 +per_timeout_num = 0 +case_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/asm/3.s" +bin_path = "./sysy-data/quick_test/bin/3" +start_time = "2024-08-19 10:48:36.154342630 +08:00" +end_time = "2024-08-19 10:48:36.200659359 +08:00" +time_cost = "PT0.046316729S" +success = true +per_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/asm/6.s" +bin_path = "./sysy-data/quick_test/bin/6" +start_time = "2024-08-19 10:48:36.294797714 +08:00" +end_time = "2024-08-19 10:48:36.340602354 +08:00" +time_cost = "PT0.04580464S" +success = true +per_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/asm/7.s" +bin_path = "./sysy-data/quick_test/bin/7" +start_time = "2024-08-19 10:48:36.251118613 +08:00" +end_time = "2024-08-19 10:48:36.293606709 +08:00" +time_cost = "PT0.042488096S" +success = true +per_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/asm/96_matrix_add.s" +bin_path = "./sysy-data/quick_test/bin/96_matrix_add" +start_time = "2024-08-19 10:48:36.202477680 +08:00" +end_time = "2024-08-19 10:48:36.249284425 +08:00" +time_cost = "PT0.046806745S" +success = true +per_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/asm/97_matrix_sub.s" +bin_path = "./sysy-data/quick_test/bin/97_matrix_sub" +start_time = "2024-08-19 10:48:36.342485420 +08:00" +end_time = "2024-08-19 10:48:36.386292175 +08:00" +time_cost = "PT0.043806755S" +success = true +per_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/asm/98_matrix_mul.s" +bin_path = "./sysy-data/quick_test/bin/98_matrix_mul" +start_time = "2024-08-19 10:48:36.109906116 +08:00" +end_time = "2024-08-19 10:48:36.152774993 +08:00" +time_cost = "PT0.042868877S" +success = true +per_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/asm/99_matrix_tran.s" +bin_path = "./sysy-data/quick_test/bin/99_matrix_tran" +start_time = "2024-08-19 10:48:36.387394276 +08:00" +end_time = "2024-08-19 10:48:36.424825872 +08:00" +time_cost = "PT0.037431596S" +success = true +per_timeout = false diff --git a/quick_test/bin/3 b/quick_test/bin/3 new file mode 100755 index 0000000..09533df Binary files /dev/null and b/quick_test/bin/3 differ diff --git a/quick_test/bin/6 b/quick_test/bin/6 new file mode 100755 index 0000000..8086ae7 Binary files /dev/null and b/quick_test/bin/6 differ diff --git a/quick_test/bin/7 b/quick_test/bin/7 new file mode 100755 index 0000000..e2d4735 Binary files /dev/null and b/quick_test/bin/7 differ diff --git a/quick_test/bin/96_matrix_add b/quick_test/bin/96_matrix_add new file mode 100755 index 0000000..2bcf607 Binary files /dev/null and b/quick_test/bin/96_matrix_add differ diff --git a/quick_test/bin/97_matrix_sub b/quick_test/bin/97_matrix_sub new file mode 100755 index 0000000..c300e12 Binary files /dev/null and b/quick_test/bin/97_matrix_sub differ diff --git a/quick_test/bin/98_matrix_mul b/quick_test/bin/98_matrix_mul new file mode 100755 index 0000000..4abbc10 Binary files /dev/null and b/quick_test/bin/98_matrix_mul differ diff --git a/quick_test/bin/99_matrix_tran b/quick_test/bin/99_matrix_tran new file mode 100755 index 0000000..c52fa4f Binary files /dev/null and b/quick_test/bin/99_matrix_tran differ diff --git a/quick_test/compile.toml b/quick_test/compile.toml new file mode 100644 index 0000000..de2249d --- /dev/null +++ b/quick_test/compile.toml @@ -0,0 +1,72 @@ +start_time = "2024-08-19 10:48:35.917414358 +08:00" +end_time = "2024-08-19 10:48:36.100441947 +08:00" +time_cost = "PT0.183027589S" +all_success = true +success_num = 7 +failed_num = 0 +total_num = 7 +per_timeout_num = 0 +case_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/3.sy" +asm = "./sysy-data/quick_test/asm/3.s" +start_time = "2024-08-19 10:48:36.023498273 +08:00" +end_time = "2024-08-19 10:48:36.038450057 +08:00" +time_cost = "PT0.014951784S" +success = true +per_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/6.sy" +asm = "./sysy-data/quick_test/asm/6.s" +start_time = "2024-08-19 10:48:36.011369803 +08:00" +end_time = "2024-08-19 10:48:36.022157891 +08:00" +time_cost = "PT0.010788088S" +success = true +per_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/7.sy" +asm = "./sysy-data/quick_test/asm/7.s" +start_time = "2024-08-19 10:48:36.039594228 +08:00" +end_time = "2024-08-19 10:48:36.052244250 +08:00" +time_cost = "PT0.012650022S" +success = true +per_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/96_matrix_add.sy" +asm = "./sysy-data/quick_test/asm/96_matrix_add.s" +start_time = "2024-08-19 10:48:35.991482933 +08:00" +end_time = "2024-08-19 10:48:36.010398249 +08:00" +time_cost = "PT0.018915316S" +success = true +per_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/97_matrix_sub.sy" +asm = "./sysy-data/quick_test/asm/97_matrix_sub.s" +start_time = "2024-08-19 10:48:35.918738774 +08:00" +end_time = "2024-08-19 10:48:35.954823062 +08:00" +time_cost = "PT0.036084288S" +success = true +per_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/98_matrix_mul.sy" +asm = "./sysy-data/quick_test/asm/98_matrix_mul.s" +start_time = "2024-08-19 10:48:36.053876120 +08:00" +end_time = "2024-08-19 10:48:36.100244879 +08:00" +time_cost = "PT0.046368759S" +success = true +per_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/99_matrix_tran.sy" +asm = "./sysy-data/quick_test/asm/99_matrix_tran.s" +start_time = "2024-08-19 10:48:35.956222772 +08:00" +end_time = "2024-08-19 10:48:35.989595600 +08:00" +time_cost = "PT0.033372828S" +success = true +per_timeout = false diff --git a/quick_test/diff.toml b/quick_test/diff.toml new file mode 100644 index 0000000..f9197a9 --- /dev/null +++ b/quick_test/diff.toml @@ -0,0 +1,63 @@ +start_time = "2024-08-19 10:48:37.928981007 +08:00" +end_time = "2024-08-19 10:48:37.942229844 +08:00" +time_cost = "PT0.013248837S" +all_success = false +success_num = 3 +failed_num = 4 +total_num = 7 + +[[diff]] +out = "./sysy-data/quick_test/output/6.out" +expect_out = "./sysy-data/quick_test/expect/output/6.out" +start_time = "2024-08-19 10:48:37.929759352 +08:00" +end_time = "2024-08-19 10:48:37.930398286 +08:00" +time_cost = "PT0.000638934S" +status = "Same" + +[[diff]] +out = "./sysy-data/quick_test/output/99_matrix_tran.out" +expect_out = "./sysy-data/quick_test/expect/output/99_matrix_tran.out" +start_time = "2024-08-19 10:48:37.931092818 +08:00" +end_time = "2024-08-19 10:48:37.931918325 +08:00" +time_cost = "PT0.000825507S" +status = "Different" + +[[diff]] +out = "./sysy-data/quick_test/output/7.out" +expect_out = "./sysy-data/quick_test/expect/output/7.out" +start_time = "2024-08-19 10:48:37.934823461 +08:00" +end_time = "2024-08-19 10:48:37.935734433 +08:00" +time_cost = "PT0.000910972S" +status = "Same" + +[[diff]] +out = "./sysy-data/quick_test/output/96_matrix_add.out" +expect_out = "./sysy-data/quick_test/expect/output/96_matrix_add.out" +start_time = "2024-08-19 10:48:37.932973661 +08:00" +end_time = "2024-08-19 10:48:37.933633292 +08:00" +time_cost = "PT0.000659631S" +status = "Different" + +[[diff]] +out = "./sysy-data/quick_test/output/98_matrix_mul.out" +expect_out = "./sysy-data/quick_test/expect/output/98_matrix_mul.out" +start_time = "2024-08-19 10:48:37.939581326 +08:00" +end_time = "2024-08-19 10:48:37.940228658 +08:00" +time_cost = "PT0.000647332S" +status = "Different" + +[[diff]] +out = "./sysy-data/quick_test/output/97_matrix_sub.out" +expect_out = "./sysy-data/quick_test/expect/output/97_matrix_sub.out" +start_time = "2024-08-19 10:48:37.941393583 +08:00" +end_time = "2024-08-19 10:48:37.942192165 +08:00" +time_cost = "PT0.000798582S" +status = "Different" + +[[diff]] +out = "./sysy-data/quick_test/output/3.out" +expect_out = "./sysy-data/quick_test/expect/output/3.out" +start_time = "2024-08-19 10:48:37.936767361 +08:00" +end_time = "2024-08-19 10:48:37.937957244 +08:00" +time_cost = "PT0.001189883S" +status = "Same" diff --git a/quick_test/diff/3.diff b/quick_test/diff/3.diff new file mode 100644 index 0000000..e69de29 diff --git a/quick_test/diff/6.diff b/quick_test/diff/6.diff new file mode 100644 index 0000000..e69de29 diff --git a/quick_test/diff/7.diff b/quick_test/diff/7.diff new file mode 100644 index 0000000..e69de29 diff --git a/quick_test/diff/96_matrix_add.diff b/quick_test/diff/96_matrix_add.diff new file mode 100644 index 0000000..8e92ce8 --- /dev/null +++ b/quick_test/diff/96_matrix_add.diff @@ -0,0 +1,10 @@ +0a1,3 +> 024 +> 024 +> 024 +2c5 +< ExitStatus(unix_wait_status(139)) +\ No newline at end of file +--- +> 0 +\ No newline at end of file diff --git a/quick_test/diff/97_matrix_sub.diff b/quick_test/diff/97_matrix_sub.diff new file mode 100644 index 0000000..ed0c152 --- /dev/null +++ b/quick_test/diff/97_matrix_sub.diff @@ -0,0 +1,10 @@ +0a1,3 +> 000 +> 000 +> 000 +2c5 +< ExitStatus(unix_wait_status(139)) +\ No newline at end of file +--- +> 0 +\ No newline at end of file diff --git a/quick_test/diff/98_matrix_mul.diff b/quick_test/diff/98_matrix_mul.diff new file mode 100644 index 0000000..855f874 --- /dev/null +++ b/quick_test/diff/98_matrix_mul.diff @@ -0,0 +1,10 @@ +0a1,3 +> 036 +> 036 +> 036 +2c5 +< ExitStatus(unix_wait_status(139)) +\ No newline at end of file +--- +> 0 +\ No newline at end of file diff --git a/quick_test/diff/99_matrix_tran.diff b/quick_test/diff/99_matrix_tran.diff new file mode 100644 index 0000000..48674fe --- /dev/null +++ b/quick_test/diff/99_matrix_tran.diff @@ -0,0 +1,10 @@ +0a1,3 +> 000 +> 111 +> 222 +2c5 +< ExitStatus(unix_wait_status(139)) +\ No newline at end of file +--- +> 0 +\ No newline at end of file diff --git a/quick_test/execute.toml b/quick_test/execute.toml new file mode 100644 index 0000000..b3bed96 --- /dev/null +++ b/quick_test/execute.toml @@ -0,0 +1,79 @@ +start_time = "2024-08-19 10:48:36.430522756 +08:00" +end_time = "2024-08-19 10:48:37.908763935 +08:00" +time_cost = "PT1.478241179S" +all_success = true +success_num = 7 +failed_num = 0 +total_num = 7 +per_timeout_num = 0 +case_timeout = false + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/bin/3" +input_path = "./sysy-data/quick_test/input/3.in" +output_path = "./sysy-data/quick_test/output/3.out" +start_time = "2024-08-19 10:48:37.882813716 +08:00" +end_time = "2024-08-19 10:48:37.908638058 +08:00" +time_cost = "PT0.025824342S" +per_timeout = false +success = true + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/bin/6" +input_path = "./sysy-data/quick_test/input/6.in" +output_path = "./sysy-data/quick_test/output/6.out" +start_time = "2024-08-19 10:48:37.155747910 +08:00" +end_time = "2024-08-19 10:48:37.178043778 +08:00" +time_cost = "PT0.022295868S" +per_timeout = false +success = true + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/bin/7" +input_path = "./sysy-data/quick_test/input/7.in" +output_path = "./sysy-data/quick_test/output/7.out" +start_time = "2024-08-19 10:48:37.514335137 +08:00" +end_time = "2024-08-19 10:48:37.544210775 +08:00" +time_cost = "PT0.029875638S" +per_timeout = false +success = true + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/bin/96_matrix_add" +input_path = "./sysy-data/quick_test/input/96_matrix_add.in" +output_path = "./sysy-data/quick_test/output/96_matrix_add.out" +start_time = "2024-08-19 10:48:36.432267300 +08:00" +end_time = "2024-08-19 10:48:36.774847170 +08:00" +time_cost = "PT0.34257987S" +per_timeout = false +success = true + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/bin/97_matrix_sub" +input_path = "./sysy-data/quick_test/input/97_matrix_sub.in" +output_path = "./sysy-data/quick_test/output/97_matrix_sub.out" +start_time = "2024-08-19 10:48:37.545762887 +08:00" +end_time = "2024-08-19 10:48:37.881000271 +08:00" +time_cost = "PT0.335237384S" +per_timeout = false +success = true + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/bin/98_matrix_mul" +input_path = "./sysy-data/quick_test/input/98_matrix_mul.in" +output_path = "./sysy-data/quick_test/output/98_matrix_mul.out" +start_time = "2024-08-19 10:48:36.776139802 +08:00" +end_time = "2024-08-19 10:48:37.153948244 +08:00" +time_cost = "PT0.377808442S" +per_timeout = false +success = true + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/bin/99_matrix_tran" +input_path = "./sysy-data/quick_test/input/99_matrix_tran.in" +output_path = "./sysy-data/quick_test/output/99_matrix_tran.out" +start_time = "2024-08-19 10:48:37.179460152 +08:00" +end_time = "2024-08-19 10:48:37.513118892 +08:00" +time_cost = "PT0.33365874S" +per_timeout = false +success = true diff --git a/quick_test/expect/asm/3.s b/quick_test/expect/asm/3.s new file mode 100644 index 0000000..641dedb --- /dev/null +++ b/quick_test/expect/asm/3.s @@ -0,0 +1,79 @@ + .file "3.sy" + .option nopic + .attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" + .attribute unaligned_access, 0 + .attribute stack_align, 16 + .text + .globl A + .bss + .align 3 + .type A, @object + .size A, 36 +A: + .zero 36 + .globl B + .align 3 + .type B, @object + .size B, 36 +B: + .zero 36 + .text + .align 1 + .globl main + .type main, @function +main: +.LFB6: + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sd ra,24(sp) + sd s0,16(sp) + .cfi_offset 1, -8 + .cfi_offset 8, -16 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw zero,-20(s0) + lui a5,%hi(A) + addi a0,a5,%lo(A) + call getarray + j .L2 +.L3: + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) + lui a5,%hi(A) + addi a4,a5,%lo(A) + lw a5,-20(s0) + slli a5,a5,2 + add a5,a4,a5 + lw a4,0(a5) + lui a5,%hi(B) + addi a3,a5,%lo(B) + lw a5,-20(s0) + slli a5,a5,2 + add a5,a3,a5 + sw a4,0(a5) +.L2: + lw a5,-20(s0) + sext.w a4,a5 + li a5,7 + ble a4,a5,.L3 + lui a5,%hi(B) + addi a1,a5,%lo(B) + li a0,8 + call putarray + li a5,0 + mv a0,a5 + ld ra,24(sp) + .cfi_restore 1 + ld s0,16(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE6: + .size main, .-main + .ident "GCC: (GNU) 13.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/quick_test/expect/asm/6.s b/quick_test/expect/asm/6.s new file mode 100644 index 0000000..eee5ce8 --- /dev/null +++ b/quick_test/expect/asm/6.s @@ -0,0 +1,76 @@ + .file "6.sy" + .option nopic + .attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" + .attribute unaligned_access, 0 + .attribute stack_align, 16 + .text + .globl A + .data + .align 3 + .type A, @object + .size A, 36 +A: + .word 1 + .word 1 + .word 4 + .word 5 + .word 1 + .word 4 + .zero 12 + .text + .align 1 + .globl main + .type main, @function +main: +.LFB6: + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sd ra,24(sp) + sd s0,16(sp) + .cfi_offset 1, -8 + .cfi_offset 8, -16 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + lui a5,%hi(A) + addi a5,a5,%lo(A) + li a4,11 + sw a4,0(a5) + li a0,4 + call thrd_create + mv a5,a0 + sw a5,-20(s0) + lui a5,%hi(A) + addi a4,a5,%lo(A) + lw a5,-20(s0) + slli a5,a5,2 + add a5,a4,a5 + lw a5,0(a5) + slliw a5,a5,1 + sext.w a4,a5 + lui a5,%hi(A) + addi a3,a5,%lo(A) + lw a5,-20(s0) + slli a5,a5,2 + add a5,a3,a5 + sw a4,0(a5) + call thrd_join + lui a5,%hi(A) + addi a1,a5,%lo(A) + li a0,8 + call putarray + li a5,0 + mv a0,a5 + ld ra,24(sp) + .cfi_restore 1 + ld s0,16(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE6: + .size main, .-main + .ident "GCC: (GNU) 13.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/quick_test/expect/asm/7.s b/quick_test/expect/asm/7.s new file mode 100644 index 0000000..91b0bad --- /dev/null +++ b/quick_test/expect/asm/7.s @@ -0,0 +1,95 @@ + .file "7.sy" + .option nopic + .attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" + .attribute unaligned_access, 0 + .attribute stack_align, 16 + .text + .globl A + .data + .align 3 + .type A, @object + .size A, 36 +A: + .word 1 + .word 1 + .word 4 + .word 5 + .word 1 + .word 4 + .zero 12 + .text + .align 1 + .globl main + .type main, @function +main: +.LFB6: + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sd ra,24(sp) + sd s0,16(sp) + .cfi_offset 1, -8 + .cfi_offset 8, -16 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + li a0,4 + call thrd_create + mv a5,a0 + sw a5,-20(s0) + lui a5,%hi(A) + addi a4,a5,%lo(A) + lw a5,-20(s0) + slli a5,a5,2 + add a5,a4,a5 + lw a5,0(a5) + slliw a5,a5,1 + sext.w a4,a5 + lui a5,%hi(A) + addi a3,a5,%lo(A) + lw a5,-20(s0) + slli a5,a5,2 + add a5,a3,a5 + sw a4,0(a5) + call thrd_join + lui a5,%hi(A) + addi a1,a5,%lo(A) + li a0,8 + call putarray + li a0,4 + call thrd_create + mv a5,a0 + sw a5,-24(s0) + lui a5,%hi(A) + addi a4,a5,%lo(A) + lw a5,-24(s0) + slli a5,a5,2 + add a5,a4,a5 + lw a5,0(a5) + slliw a5,a5,1 + sext.w a4,a5 + lui a5,%hi(A) + addi a3,a5,%lo(A) + lw a5,-24(s0) + slli a5,a5,2 + add a5,a3,a5 + sw a4,0(a5) + call thrd_join + lui a5,%hi(A) + addi a1,a5,%lo(A) + li a0,8 + call putarray + li a5,0 + mv a0,a5 + ld ra,24(sp) + .cfi_restore 1 + ld s0,16(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE6: + .size main, .-main + .ident "GCC: (GNU) 13.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/quick_test/expect/asm/96_matrix_add.s b/quick_test/expect/asm/96_matrix_add.s new file mode 100644 index 0000000..ea6c4d5 --- /dev/null +++ b/quick_test/expect/asm/96_matrix_add.s @@ -0,0 +1,303 @@ + .file "96_matrix_add.sy" + .option nopic + .attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" + .attribute unaligned_access, 0 + .attribute stack_align, 16 + .text + .globl M + .section .sbss,"aw",@nobits + .align 2 + .type M, @object + .size M, 4 +M: + .zero 4 + .globl L + .align 2 + .type L, @object + .size L, 4 +L: + .zero 4 + .globl N + .align 2 + .type N, @object + .size N, 4 +N: + .zero 4 + .text + .align 1 + .globl add + .type add, @function +add: +.LFB0: + .cfi_startproc + addi sp,sp,-96 + .cfi_def_cfa_offset 96 + sd s0,88(sp) + .cfi_offset 8, -8 + addi s0,sp,96 + .cfi_def_cfa 8, 0 + sd a0,-40(s0) + sd a1,-48(s0) + sd a2,-56(s0) + sd a3,-64(s0) + sd a4,-72(s0) + sd a5,-80(s0) + sd a6,-88(s0) + sd a7,-96(s0) + sw zero,-20(s0) + j .L2 +.L3: + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-40(s0) + add a5,a4,a5 + flw fa4,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-64(s0) + add a5,a4,a5 + flw fa5,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-88(s0) + add a5,a4,a5 + fadd.s fa5,fa4,fa5 + fsw fa5,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-48(s0) + add a5,a4,a5 + flw fa4,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-72(s0) + add a5,a4,a5 + flw fa5,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-96(s0) + add a5,a4,a5 + fadd.s fa5,fa4,fa5 + fsw fa5,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-56(s0) + add a5,a4,a5 + flw fa4,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-80(s0) + add a5,a4,a5 + flw fa5,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,0(s0) + add a5,a4,a5 + fadd.s fa5,fa4,fa5 + fsw fa5,0(a5) + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L2: + lui a5,%hi(M) + lw a4,%lo(M)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L3 + li a5,0 + mv a0,a5 + ld s0,88(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 96 + addi sp,sp,96 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE0: + .size add, .-add + .align 1 + .globl main + .type main, @function +main: +.LFB1: + .cfi_startproc + addi sp,sp,-192 + .cfi_def_cfa_offset 192 + sd ra,184(sp) + sd s0,176(sp) + .cfi_offset 1, -8 + .cfi_offset 8, -16 + addi s0,sp,192 + .cfi_def_cfa 8, 0 + lui a5,%hi(N) + li a4,3 + sw a4,%lo(N)(a5) + lui a5,%hi(M) + li a4,3 + sw a4,%lo(M)(a5) + lui a5,%hi(L) + li a4,3 + sw a4,%lo(L)(a5) + sw zero,-20(s0) + j .L6 +.L7: + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-24(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-40(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-56(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-72(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-88(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-104(a5) + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L6: + lui a5,%hi(M) + lw a4,%lo(M)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L7 + addi a7,s0,-160 + addi a6,s0,-144 + addi t1,s0,-120 + addi a4,s0,-104 + addi a3,s0,-88 + addi a2,s0,-72 + addi a1,s0,-56 + addi a0,s0,-40 + addi a5,s0,-176 + sd a5,0(sp) + mv a5,t1 + call add + mv a5,a0 + sw a5,-20(s0) + j .L8 +.L9: + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + flw fa5,-128(a5) + fcvt.w.s a5,fa5,rtz + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putint + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L8: + lui a5,%hi(N) + lw a4,%lo(N)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L9 + li a5,10 + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putch + sw zero,-20(s0) + j .L10 +.L11: + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + flw fa5,-144(a5) + fcvt.w.s a5,fa5,rtz + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putint + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L10: + lui a5,%hi(N) + lw a4,%lo(N)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L11 + li a5,10 + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putch + sw zero,-20(s0) + j .L12 +.L13: + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + flw fa5,-160(a5) + fcvt.w.s a5,fa5,rtz + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putint + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L12: + lui a5,%hi(N) + lw a4,%lo(N)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L13 + li a5,10 + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putch + li a5,0 + mv a0,a5 + ld ra,184(sp) + .cfi_restore 1 + ld s0,176(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 192 + addi sp,sp,192 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE1: + .size main, .-main + .ident "GCC: (GNU) 13.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/quick_test/expect/asm/97_matrix_sub.s b/quick_test/expect/asm/97_matrix_sub.s new file mode 100644 index 0000000..57d8033 --- /dev/null +++ b/quick_test/expect/asm/97_matrix_sub.s @@ -0,0 +1,298 @@ + .file "97_matrix_sub.sy" + .option nopic + .attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" + .attribute unaligned_access, 0 + .attribute stack_align, 16 + .text + .globl N + .section .sbss,"aw",@nobits + .align 2 + .type N, @object + .size N, 4 +N: + .zero 4 + .globl M + .align 2 + .type M, @object + .size M, 4 +M: + .zero 4 + .globl L + .align 2 + .type L, @object + .size L, 4 +L: + .zero 4 + .text + .align 1 + .globl sub + .type sub, @function +sub: +.LFB0: + .cfi_startproc + addi sp,sp,-96 + .cfi_def_cfa_offset 96 + sd s0,88(sp) + .cfi_offset 8, -8 + addi s0,sp,96 + .cfi_def_cfa 8, 0 + sd a0,-40(s0) + sd a1,-48(s0) + sd a2,-56(s0) + sd a3,-64(s0) + sd a4,-72(s0) + sd a5,-80(s0) + sd a6,-88(s0) + sd a7,-96(s0) + sw zero,-20(s0) + j .L2 +.L3: + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-40(s0) + add a5,a4,a5 + flw fa4,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-64(s0) + add a5,a4,a5 + flw fa5,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-88(s0) + add a5,a4,a5 + fsub.s fa5,fa4,fa5 + fsw fa5,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-48(s0) + add a5,a4,a5 + flw fa4,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-72(s0) + add a5,a4,a5 + flw fa5,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-96(s0) + add a5,a4,a5 + fsub.s fa5,fa4,fa5 + fsw fa5,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-56(s0) + add a5,a4,a5 + flw fa4,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,-80(s0) + add a5,a4,a5 + flw fa5,0(a5) + lw a5,-20(s0) + slli a5,a5,2 + ld a4,0(s0) + add a5,a4,a5 + fsub.s fa5,fa4,fa5 + fsw fa5,0(a5) + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L2: + lw a5,-20(s0) + sext.w a4,a5 + li a5,2 + ble a4,a5,.L3 + li a5,0 + mv a0,a5 + ld s0,88(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 96 + addi sp,sp,96 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE0: + .size sub, .-sub + .align 1 + .globl main + .type main, @function +main: +.LFB1: + .cfi_startproc + addi sp,sp,-192 + .cfi_def_cfa_offset 192 + sd ra,184(sp) + sd s0,176(sp) + .cfi_offset 1, -8 + .cfi_offset 8, -16 + addi s0,sp,192 + .cfi_def_cfa 8, 0 + lui a5,%hi(N) + li a4,3 + sw a4,%lo(N)(a5) + lui a5,%hi(M) + li a4,3 + sw a4,%lo(M)(a5) + lui a5,%hi(L) + li a4,3 + sw a4,%lo(L)(a5) + sw zero,-20(s0) + j .L6 +.L7: + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-24(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-40(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-56(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-72(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-88(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-104(a5) + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L6: + lw a5,-20(s0) + sext.w a4,a5 + li a5,2 + ble a4,a5,.L7 + addi a7,s0,-160 + addi a6,s0,-144 + addi t1,s0,-120 + addi a4,s0,-104 + addi a3,s0,-88 + addi a2,s0,-72 + addi a1,s0,-56 + addi a0,s0,-40 + addi a5,s0,-176 + sd a5,0(sp) + mv a5,t1 + call sub + mv a5,a0 + sw a5,-20(s0) + j .L8 +.L9: + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + flw fa5,-128(a5) + fcvt.w.s a5,fa5,rtz + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putint + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L8: + lw a5,-20(s0) + sext.w a4,a5 + li a5,2 + ble a4,a5,.L9 + li a5,10 + sw a5,-24(s0) + sw zero,-20(s0) + lw a5,-24(s0) + mv a0,a5 + call putch + j .L10 +.L11: + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + flw fa5,-144(a5) + fcvt.w.s a5,fa5,rtz + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putint + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L10: + lw a5,-20(s0) + sext.w a4,a5 + li a5,2 + ble a4,a5,.L11 + li a5,10 + sw a5,-24(s0) + sw zero,-20(s0) + lw a5,-24(s0) + mv a0,a5 + call putch + j .L12 +.L13: + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + flw fa5,-160(a5) + fcvt.w.s a5,fa5,rtz + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putint + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L12: + lw a5,-20(s0) + sext.w a4,a5 + li a5,2 + ble a4,a5,.L13 + li a5,10 + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putch + li a5,0 + mv a0,a5 + ld ra,184(sp) + .cfi_restore 1 + ld s0,176(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 192 + addi sp,sp,192 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE1: + .size main, .-main + .ident "GCC: (GNU) 13.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/quick_test/expect/asm/98_matrix_mul.s b/quick_test/expect/asm/98_matrix_mul.s new file mode 100644 index 0000000..958af4e --- /dev/null +++ b/quick_test/expect/asm/98_matrix_mul.s @@ -0,0 +1,457 @@ + .file "98_matrix_mul.sy" + .option nopic + .attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" + .attribute unaligned_access, 0 + .attribute stack_align, 16 + .text + .globl M + .section .sbss,"aw",@nobits + .align 2 + .type M, @object + .size M, 4 +M: + .zero 4 + .globl L + .align 2 + .type L, @object + .size L, 4 +L: + .zero 4 + .globl N + .align 2 + .type N, @object + .size N, 4 +N: + .zero 4 + .text + .align 1 + .globl mul + .type mul, @function +mul: +.LFB0: + .cfi_startproc + addi sp,sp,-96 + .cfi_def_cfa_offset 96 + sd s0,88(sp) + .cfi_offset 8, -8 + addi s0,sp,96 + .cfi_def_cfa 8, 0 + sd a0,-40(s0) + sd a1,-48(s0) + sd a2,-56(s0) + sd a3,-64(s0) + sd a4,-72(s0) + sd a5,-80(s0) + sd a6,-88(s0) + sd a7,-96(s0) + sw zero,-20(s0) + ld a5,-40(s0) + flw fa4,0(a5) + ld a5,-64(s0) + flw fa5,0(a5) + fmul.s fa4,fa4,fa5 + ld a5,-40(s0) + addi a5,a5,4 + flw fa3,0(a5) + ld a5,-72(s0) + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + fadd.s fa4,fa4,fa5 + ld a5,-40(s0) + addi a5,a5,8 + flw fa3,0(a5) + ld a5,-80(s0) + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + fadd.s fa5,fa4,fa5 + ld a5,-88(s0) + fsw fa5,0(a5) + ld a5,-40(s0) + flw fa4,0(a5) + ld a5,-64(s0) + addi a5,a5,4 + flw fa5,0(a5) + fmul.s fa4,fa4,fa5 + ld a5,-40(s0) + addi a5,a5,4 + flw fa3,0(a5) + ld a5,-72(s0) + addi a5,a5,4 + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + fadd.s fa4,fa4,fa5 + ld a5,-40(s0) + addi a5,a5,8 + flw fa3,0(a5) + ld a5,-80(s0) + addi a5,a5,4 + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + ld a5,-88(s0) + addi a5,a5,4 + fadd.s fa5,fa4,fa5 + fsw fa5,0(a5) + ld a5,-40(s0) + flw fa4,0(a5) + ld a5,-64(s0) + addi a5,a5,8 + flw fa5,0(a5) + fmul.s fa4,fa4,fa5 + ld a5,-40(s0) + addi a5,a5,4 + flw fa3,0(a5) + ld a5,-72(s0) + addi a5,a5,8 + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + fadd.s fa4,fa4,fa5 + ld a5,-40(s0) + addi a5,a5,8 + flw fa3,0(a5) + ld a5,-80(s0) + addi a5,a5,8 + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + ld a5,-88(s0) + addi a5,a5,8 + fadd.s fa5,fa4,fa5 + fsw fa5,0(a5) + ld a5,-48(s0) + flw fa4,0(a5) + ld a5,-64(s0) + flw fa5,0(a5) + fmul.s fa4,fa4,fa5 + ld a5,-48(s0) + addi a5,a5,4 + flw fa3,0(a5) + ld a5,-72(s0) + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + fadd.s fa4,fa4,fa5 + ld a5,-48(s0) + addi a5,a5,8 + flw fa3,0(a5) + ld a5,-80(s0) + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + fadd.s fa5,fa4,fa5 + ld a5,-96(s0) + fsw fa5,0(a5) + ld a5,-48(s0) + flw fa4,0(a5) + ld a5,-64(s0) + addi a5,a5,4 + flw fa5,0(a5) + fmul.s fa4,fa4,fa5 + ld a5,-48(s0) + addi a5,a5,4 + flw fa3,0(a5) + ld a5,-72(s0) + addi a5,a5,4 + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + fadd.s fa4,fa4,fa5 + ld a5,-48(s0) + addi a5,a5,8 + flw fa3,0(a5) + ld a5,-80(s0) + addi a5,a5,4 + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + ld a5,-96(s0) + addi a5,a5,4 + fadd.s fa5,fa4,fa5 + fsw fa5,0(a5) + ld a5,-48(s0) + flw fa4,0(a5) + ld a5,-64(s0) + addi a5,a5,8 + flw fa5,0(a5) + fmul.s fa4,fa4,fa5 + ld a5,-48(s0) + addi a5,a5,4 + flw fa3,0(a5) + ld a5,-72(s0) + addi a5,a5,8 + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + fadd.s fa4,fa4,fa5 + ld a5,-48(s0) + addi a5,a5,8 + flw fa3,0(a5) + ld a5,-80(s0) + addi a5,a5,8 + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + ld a5,-96(s0) + addi a5,a5,8 + fadd.s fa5,fa4,fa5 + fsw fa5,0(a5) + ld a5,-56(s0) + flw fa4,0(a5) + ld a5,-64(s0) + flw fa5,0(a5) + fmul.s fa4,fa4,fa5 + ld a5,-56(s0) + addi a5,a5,4 + flw fa3,0(a5) + ld a5,-72(s0) + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + fadd.s fa4,fa4,fa5 + ld a5,-56(s0) + addi a5,a5,8 + flw fa3,0(a5) + ld a5,-80(s0) + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + fadd.s fa5,fa4,fa5 + ld a5,0(s0) + fsw fa5,0(a5) + ld a5,-56(s0) + flw fa4,0(a5) + ld a5,-64(s0) + addi a5,a5,4 + flw fa5,0(a5) + fmul.s fa4,fa4,fa5 + ld a5,-56(s0) + addi a5,a5,4 + flw fa3,0(a5) + ld a5,-72(s0) + addi a5,a5,4 + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + fadd.s fa4,fa4,fa5 + ld a5,-56(s0) + addi a5,a5,8 + flw fa3,0(a5) + ld a5,-80(s0) + addi a5,a5,4 + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + ld a5,0(s0) + addi a5,a5,4 + fadd.s fa5,fa4,fa5 + fsw fa5,0(a5) + ld a5,-56(s0) + flw fa4,0(a5) + ld a5,-64(s0) + addi a5,a5,8 + flw fa5,0(a5) + fmul.s fa4,fa4,fa5 + ld a5,-56(s0) + addi a5,a5,4 + flw fa3,0(a5) + ld a5,-72(s0) + addi a5,a5,8 + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + fadd.s fa4,fa4,fa5 + ld a5,-56(s0) + addi a5,a5,8 + flw fa3,0(a5) + ld a5,-80(s0) + addi a5,a5,8 + flw fa5,0(a5) + fmul.s fa5,fa3,fa5 + ld a5,0(s0) + addi a5,a5,8 + fadd.s fa5,fa4,fa5 + fsw fa5,0(a5) + li a5,0 + mv a0,a5 + ld s0,88(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 96 + addi sp,sp,96 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE0: + .size mul, .-mul + .align 1 + .globl main + .type main, @function +main: +.LFB1: + .cfi_startproc + addi sp,sp,-192 + .cfi_def_cfa_offset 192 + sd ra,184(sp) + sd s0,176(sp) + .cfi_offset 1, -8 + .cfi_offset 8, -16 + addi s0,sp,192 + .cfi_def_cfa 8, 0 + lui a5,%hi(N) + li a4,3 + sw a4,%lo(N)(a5) + lui a5,%hi(M) + li a4,3 + sw a4,%lo(M)(a5) + lui a5,%hi(L) + li a4,3 + sw a4,%lo(L)(a5) + sw zero,-20(s0) + j .L4 +.L5: + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-24(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-40(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-56(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-72(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-88(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-104(a5) + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L4: + lui a5,%hi(M) + lw a4,%lo(M)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L5 + addi a7,s0,-160 + addi a6,s0,-144 + addi t1,s0,-120 + addi a4,s0,-104 + addi a3,s0,-88 + addi a2,s0,-72 + addi a1,s0,-56 + addi a0,s0,-40 + addi a5,s0,-176 + sd a5,0(sp) + mv a5,t1 + call mul + mv a5,a0 + sw a5,-20(s0) + j .L6 +.L7: + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + flw fa5,-128(a5) + fcvt.w.s a5,fa5,rtz + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putint + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L6: + lui a5,%hi(N) + lw a4,%lo(N)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L7 + li a5,10 + sw a5,-24(s0) + sw zero,-20(s0) + lw a5,-24(s0) + mv a0,a5 + call putch + j .L8 +.L9: + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + flw fa5,-144(a5) + fcvt.w.s a5,fa5,rtz + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putint + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L8: + lui a5,%hi(N) + lw a4,%lo(N)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L9 + li a5,10 + sw a5,-24(s0) + sw zero,-20(s0) + lw a5,-24(s0) + mv a0,a5 + call putch + j .L10 +.L11: + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + flw fa5,-160(a5) + fcvt.w.s a5,fa5,rtz + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putint + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L10: + lui a5,%hi(N) + lw a4,%lo(N)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L11 + li a5,10 + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putch + li a5,0 + mv a0,a5 + ld ra,184(sp) + .cfi_restore 1 + ld s0,176(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 192 + addi sp,sp,192 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE1: + .size main, .-main + .ident "GCC: (GNU) 13.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/quick_test/expect/asm/99_matrix_tran.s b/quick_test/expect/asm/99_matrix_tran.s new file mode 100644 index 0000000..c6940bf --- /dev/null +++ b/quick_test/expect/asm/99_matrix_tran.s @@ -0,0 +1,286 @@ + .file "99_matrix_tran.sy" + .option nopic + .attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" + .attribute unaligned_access, 0 + .attribute stack_align, 16 + .text + .globl M + .section .sbss,"aw",@nobits + .align 2 + .type M, @object + .size M, 4 +M: + .zero 4 + .globl L + .align 2 + .type L, @object + .size L, 4 +L: + .zero 4 + .globl N + .align 2 + .type N, @object + .size N, 4 +N: + .zero 4 + .text + .align 1 + .globl tran + .type tran, @function +tran: +.LFB0: + .cfi_startproc + addi sp,sp,-96 + .cfi_def_cfa_offset 96 + sd s0,88(sp) + .cfi_offset 8, -8 + addi s0,sp,96 + .cfi_def_cfa 8, 0 + sd a0,-40(s0) + sd a1,-48(s0) + sd a2,-56(s0) + sd a3,-64(s0) + sd a4,-72(s0) + sd a5,-80(s0) + sd a6,-88(s0) + sd a7,-96(s0) + sw zero,-20(s0) + ld a5,-96(s0) + addi a5,a5,8 + ld a4,-56(s0) + flw fa5,4(a4) + fsw fa5,0(a5) + ld a5,0(s0) + addi a5,a5,4 + ld a4,-48(s0) + flw fa5,8(a4) + fsw fa5,0(a5) + ld a5,-88(s0) + addi a5,a5,4 + ld a4,-48(s0) + flw fa5,0(a4) + fsw fa5,0(a5) + ld a5,-88(s0) + addi a5,a5,8 + ld a4,-56(s0) + flw fa5,0(a4) + fsw fa5,0(a5) + ld a5,-40(s0) + flw fa5,4(a5) + ld a5,-96(s0) + fsw fa5,0(a5) + ld a5,-40(s0) + flw fa5,8(a5) + ld a5,0(s0) + fsw fa5,0(a5) + ld a5,-96(s0) + addi a5,a5,4 + ld a4,-48(s0) + flw fa5,4(a4) + fsw fa5,0(a5) + ld a5,0(s0) + addi a5,a5,8 + ld a4,-56(s0) + flw fa5,8(a4) + fsw fa5,0(a5) + ld a5,-40(s0) + flw fa5,0(a5) + ld a5,-88(s0) + fsw fa5,0(a5) + li a5,0 + mv a0,a5 + ld s0,88(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 96 + addi sp,sp,96 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE0: + .size tran, .-tran + .align 1 + .globl main + .type main, @function +main: +.LFB1: + .cfi_startproc + addi sp,sp,-192 + .cfi_def_cfa_offset 192 + sd ra,184(sp) + sd s0,176(sp) + .cfi_offset 1, -8 + .cfi_offset 8, -16 + addi s0,sp,192 + .cfi_def_cfa 8, 0 + lui a5,%hi(N) + li a4,3 + sw a4,%lo(N)(a5) + lui a5,%hi(M) + li a4,3 + sw a4,%lo(M)(a5) + lui a5,%hi(L) + li a4,3 + sw a4,%lo(L)(a5) + sw zero,-20(s0) + j .L4 +.L5: + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-24(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-40(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-56(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-72(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-88(a5) + lw a5,-20(s0) + fcvt.s.w fa5,a5 + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + fsw fa5,-104(a5) + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L4: + lui a5,%hi(M) + lw a4,%lo(M)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L5 + addi a7,s0,-160 + addi a6,s0,-144 + addi t1,s0,-120 + addi a4,s0,-104 + addi a3,s0,-88 + addi a2,s0,-72 + addi a1,s0,-56 + addi a0,s0,-40 + addi a5,s0,-176 + sd a5,0(sp) + mv a5,t1 + call tran + mv a5,a0 + sw a5,-20(s0) + j .L6 +.L7: + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + flw fa5,-128(a5) + fcvt.w.s a5,fa5,rtz + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putint + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L6: + lui a5,%hi(N) + lw a4,%lo(N)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L7 + li a5,10 + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putch + sw zero,-20(s0) + j .L8 +.L9: + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + flw fa5,-144(a5) + fcvt.w.s a5,fa5,rtz + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putint + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L8: + lui a5,%hi(N) + lw a4,%lo(N)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L9 + li a5,10 + sw a5,-24(s0) + sw zero,-20(s0) + lw a5,-24(s0) + mv a0,a5 + call putch + j .L10 +.L11: + lw a5,-20(s0) + slli a5,a5,2 + addi a5,a5,-16 + add a5,a5,s0 + flw fa5,-160(a5) + fcvt.w.s a5,fa5,rtz + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putint + lw a5,-20(s0) + addiw a5,a5,1 + sw a5,-20(s0) +.L10: + lui a5,%hi(N) + lw a4,%lo(N)(a5) + lw a5,-20(s0) + sext.w a5,a5 + blt a5,a4,.L11 + li a5,10 + sw a5,-24(s0) + lw a5,-24(s0) + mv a0,a5 + call putch + li a5,0 + mv a0,a5 + ld ra,184(sp) + .cfi_restore 1 + ld s0,176(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 192 + addi sp,sp,192 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE1: + .size main, .-main + .ident "GCC: (GNU) 13.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/quick_test/expect/asm2bin.toml b/quick_test/expect/asm2bin.toml new file mode 100644 index 0000000..69a268c --- /dev/null +++ b/quick_test/expect/asm2bin.toml @@ -0,0 +1,72 @@ +start_time = "2024-08-19 10:40:41.959101387 +08:00" +end_time = "2024-08-19 10:40:42.231883071 +08:00" +time_cost = "PT0.272781684S" +all_success = true +success_num = 7 +failed_num = 0 +total_num = 7 +per_timeout_num = 0 +case_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/expect/asm/3.s" +bin_path = "./sysy-data/quick_test/expect/bin/3" +start_time = "2024-08-19 10:40:41.996936324 +08:00" +end_time = "2024-08-19 10:40:42.039136575 +08:00" +time_cost = "PT0.042200251S" +success = true +per_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/expect/asm/6.s" +bin_path = "./sysy-data/quick_test/expect/bin/6" +start_time = "2024-08-19 10:40:42.115555121 +08:00" +end_time = "2024-08-19 10:40:42.154711390 +08:00" +time_cost = "PT0.039156269S" +success = true +per_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/expect/asm/7.s" +bin_path = "./sysy-data/quick_test/expect/bin/7" +start_time = "2024-08-19 10:40:42.078437068 +08:00" +end_time = "2024-08-19 10:40:42.114346725 +08:00" +time_cost = "PT0.035909657S" +success = true +per_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/expect/asm/96_matrix_add.s" +bin_path = "./sysy-data/quick_test/expect/bin/96_matrix_add" +start_time = "2024-08-19 10:40:42.040208875 +08:00" +end_time = "2024-08-19 10:40:42.077342720 +08:00" +time_cost = "PT0.037133845S" +success = true +per_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/expect/asm/97_matrix_sub.s" +bin_path = "./sysy-data/quick_test/expect/bin/97_matrix_sub" +start_time = "2024-08-19 10:40:42.155871996 +08:00" +end_time = "2024-08-19 10:40:42.192251180 +08:00" +time_cost = "PT0.036379184S" +success = true +per_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/expect/asm/98_matrix_mul.s" +bin_path = "./sysy-data/quick_test/expect/bin/98_matrix_mul" +start_time = "2024-08-19 10:40:41.960070976 +08:00" +end_time = "2024-08-19 10:40:41.995800509 +08:00" +time_cost = "PT0.035729533S" +success = true +per_timeout = false + +[[asm2bin_asm]] +asm_path = "./sysy-data/quick_test/expect/asm/99_matrix_tran.s" +bin_path = "./sysy-data/quick_test/expect/bin/99_matrix_tran" +start_time = "2024-08-19 10:40:42.193347329 +08:00" +end_time = "2024-08-19 10:40:42.231805441 +08:00" +time_cost = "PT0.038458112S" +success = true +per_timeout = false diff --git a/quick_test/expect/bin/3 b/quick_test/expect/bin/3 new file mode 100755 index 0000000..e82524f Binary files /dev/null and b/quick_test/expect/bin/3 differ diff --git a/quick_test/expect/bin/6 b/quick_test/expect/bin/6 new file mode 100755 index 0000000..3b19685 Binary files /dev/null and b/quick_test/expect/bin/6 differ diff --git a/quick_test/expect/bin/7 b/quick_test/expect/bin/7 new file mode 100755 index 0000000..6c2c667 Binary files /dev/null and b/quick_test/expect/bin/7 differ diff --git a/quick_test/expect/bin/96_matrix_add b/quick_test/expect/bin/96_matrix_add new file mode 100755 index 0000000..34187c1 Binary files /dev/null and b/quick_test/expect/bin/96_matrix_add differ diff --git a/quick_test/expect/bin/97_matrix_sub b/quick_test/expect/bin/97_matrix_sub new file mode 100755 index 0000000..0f33107 Binary files /dev/null and b/quick_test/expect/bin/97_matrix_sub differ diff --git a/quick_test/expect/bin/98_matrix_mul b/quick_test/expect/bin/98_matrix_mul new file mode 100755 index 0000000..b7084cb Binary files /dev/null and b/quick_test/expect/bin/98_matrix_mul differ diff --git a/quick_test/expect/bin/99_matrix_tran b/quick_test/expect/bin/99_matrix_tran new file mode 100755 index 0000000..9654060 Binary files /dev/null and b/quick_test/expect/bin/99_matrix_tran differ diff --git a/quick_test/expect/compile.toml b/quick_test/expect/compile.toml new file mode 100644 index 0000000..b28fd62 --- /dev/null +++ b/quick_test/expect/compile.toml @@ -0,0 +1,72 @@ +start_time = "2024-08-19 10:40:41.789470145 +08:00" +end_time = "2024-08-19 10:40:41.956642093 +08:00" +time_cost = "PT0.167171948S" +all_success = true +success_num = 7 +failed_num = 0 +total_num = 7 +per_timeout_num = 0 +case_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/3.sy" +asm = "./sysy-data/quick_test/expect/asm/3.s" +start_time = "2024-08-19 10:40:41.881476368 +08:00" +end_time = "2024-08-19 10:40:41.906471431 +08:00" +time_cost = "PT0.024995063S" +success = true +per_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/6.sy" +asm = "./sysy-data/quick_test/expect/asm/6.s" +start_time = "2024-08-19 10:40:41.848049371 +08:00" +end_time = "2024-08-19 10:40:41.879859649 +08:00" +time_cost = "PT0.031810278S" +success = true +per_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/7.sy" +asm = "./sysy-data/quick_test/expect/asm/7.s" +start_time = "2024-08-19 10:40:41.907593006 +08:00" +end_time = "2024-08-19 10:40:41.938505146 +08:00" +time_cost = "PT0.03091214S" +success = true +per_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/96_matrix_add.sy" +asm = "./sysy-data/quick_test/expect/asm/96_matrix_add.s" +start_time = "2024-08-19 10:40:41.828553042 +08:00" +end_time = "2024-08-19 10:40:41.847141164 +08:00" +time_cost = "PT0.018588122S" +success = true +per_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/97_matrix_sub.sy" +asm = "./sysy-data/quick_test/expect/asm/97_matrix_sub.s" +start_time = "2024-08-19 10:40:41.790579105 +08:00" +end_time = "2024-08-19 10:40:41.808370739 +08:00" +time_cost = "PT0.017791634S" +success = true +per_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/98_matrix_mul.sy" +asm = "./sysy-data/quick_test/expect/asm/98_matrix_mul.s" +start_time = "2024-08-19 10:40:41.939650490 +08:00" +end_time = "2024-08-19 10:40:41.956567399 +08:00" +time_cost = "PT0.016916909S" +success = true +per_timeout = false + +[[compile_sy]] +sy = "./sysy-data/quick_test/sy/99_matrix_tran.sy" +asm = "./sysy-data/quick_test/expect/asm/99_matrix_tran.s" +start_time = "2024-08-19 10:40:41.809391051 +08:00" +end_time = "2024-08-19 10:40:41.827769965 +08:00" +time_cost = "PT0.018378914S" +success = true +per_timeout = false diff --git a/quick_test/expect/execute.toml b/quick_test/expect/execute.toml new file mode 100644 index 0000000..d5b41fa --- /dev/null +++ b/quick_test/expect/execute.toml @@ -0,0 +1,79 @@ +start_time = "2024-08-19 10:40:42.233943665 +08:00" +end_time = "2024-08-19 10:40:42.381256409 +08:00" +time_cost = "PT0.147312744S" +all_success = true +success_num = 7 +failed_num = 0 +total_num = 7 +per_timeout_num = 0 +case_timeout = false + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/expect/bin/3" +input_path = "./sysy-data/quick_test/input/3.in" +output_path = "./sysy-data/quick_test/expect/output/3.out" +start_time = "2024-08-19 10:40:42.365521373 +08:00" +end_time = "2024-08-19 10:40:42.381131749 +08:00" +time_cost = "PT0.015610376S" +per_timeout = false +success = true + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/expect/bin/6" +input_path = "./sysy-data/quick_test/input/6.in" +output_path = "./sysy-data/quick_test/expect/output/6.out" +start_time = "2024-08-19 10:40:42.277847781 +08:00" +end_time = "2024-08-19 10:40:42.298414266 +08:00" +time_cost = "PT0.020566485S" +per_timeout = false +success = true + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/expect/bin/7" +input_path = "./sysy-data/quick_test/input/7.in" +output_path = "./sysy-data/quick_test/expect/output/7.out" +start_time = "2024-08-19 10:40:42.324830814 +08:00" +end_time = "2024-08-19 10:40:42.346191709 +08:00" +time_cost = "PT0.021360895S" +per_timeout = false +success = true + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/expect/bin/96_matrix_add" +input_path = "./sysy-data/quick_test/input/96_matrix_add.in" +output_path = "./sysy-data/quick_test/expect/output/96_matrix_add.out" +start_time = "2024-08-19 10:40:42.235238892 +08:00" +end_time = "2024-08-19 10:40:42.255301634 +08:00" +time_cost = "PT0.020062742S" +per_timeout = false +success = true + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/expect/bin/97_matrix_sub" +input_path = "./sysy-data/quick_test/input/97_matrix_sub.in" +output_path = "./sysy-data/quick_test/expect/output/97_matrix_sub.out" +start_time = "2024-08-19 10:40:42.347704022 +08:00" +end_time = "2024-08-19 10:40:42.364089989 +08:00" +time_cost = "PT0.016385967S" +per_timeout = false +success = true + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/expect/bin/98_matrix_mul" +input_path = "./sysy-data/quick_test/input/98_matrix_mul.in" +output_path = "./sysy-data/quick_test/expect/output/98_matrix_mul.out" +start_time = "2024-08-19 10:40:42.256932188 +08:00" +end_time = "2024-08-19 10:40:42.276185888 +08:00" +time_cost = "PT0.0192537S" +per_timeout = false +success = true + +[[execute_bin]] +bin_path = "./sysy-data/quick_test/expect/bin/99_matrix_tran" +input_path = "./sysy-data/quick_test/input/99_matrix_tran.in" +output_path = "./sysy-data/quick_test/expect/output/99_matrix_tran.out" +start_time = "2024-08-19 10:40:42.299621770 +08:00" +end_time = "2024-08-19 10:40:42.323521978 +08:00" +time_cost = "PT0.023900208S" +per_timeout = false +success = true diff --git a/quick_test/expect/log/3.log b/quick_test/expect/log/3.log new file mode 100644 index 0000000..2c3b946 --- /dev/null +++ b/quick_test/expect/log/3.log @@ -0,0 +1,63 @@ +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us diff --git a/quick_test/expect/log/6.log b/quick_test/expect/log/6.log new file mode 100644 index 0000000..2a7d133 --- /dev/null +++ b/quick_test/expect/log/6.log @@ -0,0 +1,61 @@ +stdout: + +stderr: + +stdout: + +stderr: + +stdout: + +stderr: + +stdout: + +stderr: + +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us diff --git a/quick_test/expect/log/7.log b/quick_test/expect/log/7.log new file mode 100644 index 0000000..7a56675 --- /dev/null +++ b/quick_test/expect/log/7.log @@ -0,0 +1,69 @@ +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: +./sysy-data/quick_test/sy/7.sy: In function 'main': +./sysy-data/quick_test/sy/7.sy:11:9: error: redefinition of 'n' + 11 | int n = thrd_create(4); + | ^ +./sysy-data/quick_test/sy/7.sy:7:9: note: previous definition of 'n' with type 'int' + 7 | int n = thrd_create(4); + | ^ + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: +./sysy-data/quick_test/sy/7.sy: In function 'main': +./sysy-data/quick_test/sy/7.sy:11:9: error: redefinition of 'n' + 11 | int n = thrd_create(4); + | ^ +./sysy-data/quick_test/sy/7.sy:7:9: note: previous definition of 'n' with type 'int' + 7 | int n = thrd_create(4); + | ^ + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us diff --git a/quick_test/expect/log/96_matrix_add.log b/quick_test/expect/log/96_matrix_add.log new file mode 100644 index 0000000..c40ebb0 --- /dev/null +++ b/quick_test/expect/log/96_matrix_add.log @@ -0,0 +1,36 @@ +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us diff --git a/quick_test/expect/log/97_matrix_sub.log b/quick_test/expect/log/97_matrix_sub.log new file mode 100644 index 0000000..c40ebb0 --- /dev/null +++ b/quick_test/expect/log/97_matrix_sub.log @@ -0,0 +1,36 @@ +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us diff --git a/quick_test/expect/log/98_matrix_mul.log b/quick_test/expect/log/98_matrix_mul.log new file mode 100644 index 0000000..c40ebb0 --- /dev/null +++ b/quick_test/expect/log/98_matrix_mul.log @@ -0,0 +1,36 @@ +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us diff --git a/quick_test/expect/log/99_matrix_tran.log b/quick_test/expect/log/99_matrix_tran.log new file mode 100644 index 0000000..c40ebb0 --- /dev/null +++ b/quick_test/expect/log/99_matrix_tran.log @@ -0,0 +1,36 @@ +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us +stdout: + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us diff --git a/quick_test/expect/output/3.out b/quick_test/expect/output/3.out new file mode 100644 index 0000000..f05272c --- /dev/null +++ b/quick_test/expect/output/3.out @@ -0,0 +1,3 @@ +8: 0 0 0 0 0 0 0 0 + +0 \ No newline at end of file diff --git a/quick_test/expect/output/6.out b/quick_test/expect/output/6.out new file mode 100644 index 0000000..aba0265 --- /dev/null +++ b/quick_test/expect/output/6.out @@ -0,0 +1,3 @@ +8: 22 2 8 10 2 4 0 0 + +0 \ No newline at end of file diff --git a/quick_test/expect/output/7.out b/quick_test/expect/output/7.out new file mode 100644 index 0000000..1be4e05 --- /dev/null +++ b/quick_test/expect/output/7.out @@ -0,0 +1,4 @@ +8: 2 2 8 10 2 4 0 0 +8: 4 4 16 20 4 4 0 0 + +0 \ No newline at end of file diff --git a/quick_test/expect/output/96_matrix_add.out b/quick_test/expect/output/96_matrix_add.out new file mode 100644 index 0000000..7c9f979 --- /dev/null +++ b/quick_test/expect/output/96_matrix_add.out @@ -0,0 +1,5 @@ +024 +024 +024 + +0 \ No newline at end of file diff --git a/quick_test/expect/output/97_matrix_sub.out b/quick_test/expect/output/97_matrix_sub.out new file mode 100644 index 0000000..9e10637 --- /dev/null +++ b/quick_test/expect/output/97_matrix_sub.out @@ -0,0 +1,5 @@ +000 +000 +000 + +0 \ No newline at end of file diff --git a/quick_test/expect/output/98_matrix_mul.out b/quick_test/expect/output/98_matrix_mul.out new file mode 100644 index 0000000..7b66a70 --- /dev/null +++ b/quick_test/expect/output/98_matrix_mul.out @@ -0,0 +1,5 @@ +036 +036 +036 + +0 \ No newline at end of file diff --git a/quick_test/expect/output/99_matrix_tran.out b/quick_test/expect/output/99_matrix_tran.out new file mode 100644 index 0000000..dfc4f84 --- /dev/null +++ b/quick_test/expect/output/99_matrix_tran.out @@ -0,0 +1,5 @@ +000 +111 +222 + +0 \ No newline at end of file diff --git a/quick_test/ll/3.ll b/quick_test/ll/3.ll new file mode 100644 index 0000000..d0e3d80 --- /dev/null +++ b/quick_test/ll/3.ll @@ -0,0 +1,50 @@ +@A = dso_local global [9 x i32] zeroinitializer +@B = dso_local global [9 x i32] zeroinitializer +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: +%getelementptr_7 = getelementptr [9 x i32], ptr @A, i32 0, i32 0 +%call_8 = call i32 @getarray(i32* %getelementptr_7) +%call_31 = call i32 @thrd_create(i32 4) +%Mul_33 = mul i32 %call_31, 8 +%SDiv_34 = sdiv i32 %Mul_33, 5 +%Add_36 = add i32 %Mul_33, 8 +%SDiv_37 = sdiv i32 %Add_36, 5 +br label %cond0 + +cond0: +%phi_30 = phi i32 [%SDiv_34, %entry], [%Add_14, %body1] +%icmp_39 = icmp slt i32 %phi_30, %SDiv_37 +br i1 %icmp_39, label %body1, label %exit + +body1: +%Add_14 = add i32 %phi_30, 1 +%getelementptr_17 = getelementptr [9 x i32], ptr @A, i32 0, i32 %Add_14 +%getelementptr_19 = getelementptr [9 x i32], ptr @B, i32 0, i32 %Add_14 +%load_20 = load i32, ptr %getelementptr_17 +store i32 %load_20, ptr %getelementptr_19 +br label %cond0 + +exit: +call void @thrd_join() +%getelementptr_26 = getelementptr [9 x i32], ptr @B, i32 0, i32 0 +call void @putarray(i32 8, i32* %getelementptr_26) +ret i32 0 + + +} diff --git a/quick_test/ll/6.ll b/quick_test/ll/6.ll new file mode 100644 index 0000000..9b50059 --- /dev/null +++ b/quick_test/ll/6.ll @@ -0,0 +1,32 @@ +@A = dso_local global [9 x i32] [i32 1, i32 1, i32 4, i32 5, i32 1, i32 4, i32 0, i32 0, 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() { +exit: +%getelementptr_5 = getelementptr [9 x i32], ptr @A, i32 0, i32 0 +store i32 11, ptr %getelementptr_5 +%call_8 = call i32 @thrd_create(i32 4) +%getelementptr_11 = getelementptr [9 x i32], ptr @A, i32 0, i32 %call_8 +%load_12 = load i32, ptr %getelementptr_11 +%Mul_13 = mul i32 %load_12, 2 +store i32 %Mul_13, ptr %getelementptr_11 +call void @thrd_join() +call void @putarray(i32 8, i32* %getelementptr_5) +ret i32 0 + + +} diff --git a/quick_test/ll/7.ll b/quick_test/ll/7.ll new file mode 100644 index 0000000..392ebce --- /dev/null +++ b/quick_test/ll/7.ll @@ -0,0 +1,38 @@ +@A = dso_local global [9 x i32] [i32 1, i32 1, i32 4, i32 5, i32 1, i32 4, i32 0, i32 0, 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() { +exit: +%call_6 = call i32 @thrd_create(i32 4) +%getelementptr_9 = getelementptr [9 x i32], ptr @A, i32 0, i32 %call_6 +%load_10 = load i32, ptr %getelementptr_9 +%Mul_11 = mul i32 %load_10, 2 +store i32 %Mul_11, ptr %getelementptr_9 +call void @thrd_join() +%getelementptr_16 = getelementptr [9 x i32], ptr @A, i32 0, i32 0 +call void @putarray(i32 8, i32* %getelementptr_16) +%call_19 = call i32 @thrd_create(i32 4) +%getelementptr_22 = getelementptr [9 x i32], ptr @A, i32 0, i32 %call_19 +%load_23 = load i32, ptr %getelementptr_22 +%Mul_24 = mul i32 %load_23, 2 +store i32 %Mul_24, ptr %getelementptr_22 +call void @thrd_join() +call void @putarray(i32 8, i32* %getelementptr_16) +ret i32 0 + + +} diff --git a/quick_test/ll/96_matrix_add.ll b/quick_test/ll/96_matrix_add.ll new file mode 100644 index 0000000..05cfe19 --- /dev/null +++ b/quick_test/ll/96_matrix_add.ll @@ -0,0 +1,111 @@ +@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 @add(float* %a0, float* %a1, float* %a2, float* %b0, float* %b1, float* %b2, float* %c0, float* %c1, float* %c2) { +entry: +br label %cond0 + +cond0: +%phi_141 = phi i32 [0, %entry], [%Add_69, %body1] +%load_73 = load i32, ptr @M +%icmp_74 = icmp slt i32 %phi_141, %load_73 +br i1 %icmp_74, label %body1, label %exit + +body1: +%getelementptr_31 = getelementptr float, ptr %a0, i32 %phi_141 +%getelementptr_34 = getelementptr float, ptr %b0, i32 %phi_141 +%load_35 = load float, ptr %getelementptr_31 +%load_36 = load float, ptr %getelementptr_34 +%FAdd_37 = fadd float %load_35, %load_36 +%getelementptr_40 = getelementptr float, ptr %c0, i32 %phi_141 +store float %FAdd_37, ptr %getelementptr_40 +%getelementptr_44 = getelementptr float, ptr %a1, i32 %phi_141 +%getelementptr_47 = getelementptr float, ptr %b1, i32 %phi_141 +%load_48 = load float, ptr %getelementptr_44 +%load_49 = load float, ptr %getelementptr_47 +%FAdd_50 = fadd float %load_48, %load_49 +%getelementptr_53 = getelementptr float, ptr %c1, i32 %phi_141 +store float %FAdd_50, ptr %getelementptr_53 +%getelementptr_57 = getelementptr float, ptr %a2, i32 %phi_141 +%getelementptr_60 = getelementptr float, ptr %b2, i32 %phi_141 +%load_61 = load float, ptr %getelementptr_57 +%load_62 = load float, ptr %getelementptr_60 +%FAdd_63 = fadd float %load_61, %load_62 +%getelementptr_66 = getelementptr float, ptr %c2, i32 %phi_141 +store float %FAdd_63, ptr %getelementptr_66 +%Add_69 = add i32 %phi_141, 1 +br label %cond0 + +exit: +ret i32 0 + + +} +define i32 @main() { +entry: +store i32 3, ptr @N +store i32 3, ptr @M +store i32 3, ptr @L +%alloca_86 = alloca [3 x float] +%alloca_87 = alloca [3 x float] +%alloca_88 = alloca [3 x float] +%alloca_89 = alloca [3 x float] +%alloca_90 = alloca [3 x float] +%alloca_91 = alloca [3 x float] +%getelementptr_143 = getelementptr [3 x float], ptr %alloca_88, i32 0 +%getelementptr_144 = getelementptr [3 x float], ptr %alloca_91, i32 0 +%getelementptr_145 = getelementptr [3 x float], ptr %alloca_89, i32 0 +%getelementptr_146 = getelementptr [3 x float], ptr %alloca_86, i32 0 +%getelementptr_147 = getelementptr [3 x float], ptr %alloca_90, i32 0 +%getelementptr_148 = getelementptr [3 x float], ptr %alloca_87, i32 0 +%call_149 = call i32 @thrd_create(i32 4) +%Mul_151 = mul i32 %call_149, 3 +%SDiv_152 = sdiv i32 %Mul_151, 5 +%Add_154 = add i32 %Mul_151, 3 +%SDiv_155 = sdiv i32 %Add_154, 5 +br label %cond0 + +cond0: +%phi_142 = phi i32 [%SDiv_152, %entry], [%Add_132, %body1] +%icmp_157 = icmp slt i32 %phi_142, %SDiv_155 +br i1 %icmp_157, label %body1, label %exit + +body1: +%getelementptr_102 = getelementptr [3 x float], ptr %getelementptr_146, i32 0, i32 %phi_142 +%itofp_104 = sitofp i32 %phi_142 to float +store float %itofp_104, ptr %getelementptr_102 +%getelementptr_107 = getelementptr [3 x float], ptr %getelementptr_148, i32 0, i32 %phi_142 +store float %itofp_104, ptr %getelementptr_107 +%getelementptr_112 = getelementptr [3 x float], ptr %getelementptr_143, i32 0, i32 %phi_142 +store float %itofp_104, ptr %getelementptr_112 +%getelementptr_117 = getelementptr [3 x float], ptr %getelementptr_145, i32 0, i32 %phi_142 +store float %itofp_104, ptr %getelementptr_117 +%getelementptr_122 = getelementptr [3 x float], ptr %getelementptr_147, i32 0, i32 %phi_142 +store float %itofp_104, ptr %getelementptr_122 +%getelementptr_127 = getelementptr [3 x float], ptr %getelementptr_144, i32 0, i32 %phi_142 +store float %itofp_104, ptr %getelementptr_127 +%Add_132 = add i32 %phi_142, 1 +br label %cond0 + +exit: +call void @thrd_join() +ret i32 0 + + +} diff --git a/quick_test/ll/97_matrix_sub.ll b/quick_test/ll/97_matrix_sub.ll new file mode 100644 index 0000000..477904c --- /dev/null +++ b/quick_test/ll/97_matrix_sub.ll @@ -0,0 +1,194 @@ +@N = dso_local global i32 0 +@M = dso_local global i32 0 +@L = 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_85 = alloca [3 x float] +%alloca_86 = alloca [3 x float] +%alloca_87 = alloca [3 x float] +%alloca_88 = alloca [3 x float] +%alloca_89 = alloca [3 x float] +%alloca_90 = alloca [3 x float] +%alloca_91 = alloca [6 x float] +%alloca_92 = alloca [3 x float] +%alloca_93 = alloca [3 x float] +%getelementptr_281 = getelementptr [3 x float], ptr %alloca_90, i32 0 +%getelementptr_282 = getelementptr [3 x float], ptr %alloca_88, i32 0 +%getelementptr_283 = getelementptr [3 x float], ptr %alloca_85, i32 0 +%getelementptr_284 = getelementptr [3 x float], ptr %alloca_87, i32 0 +%getelementptr_285 = getelementptr [3 x float], ptr %alloca_89, i32 0 +%getelementptr_286 = getelementptr [3 x float], ptr %alloca_86, i32 0 +%call_287 = call i32 @thrd_create(i32 4) +%Mul_289 = mul i32 %call_287, 3 +%SDiv_290 = sdiv i32 %Mul_289, 5 +%Add_292 = add i32 %Mul_289, 3 +%SDiv_293 = sdiv i32 %Add_292, 5 +br label %cond0 + +cond0: +%phi_217 = phi i32 [%SDiv_290, %entry], [%Add_131, %body1] +%icmp_295 = icmp slt i32 %phi_217, %SDiv_293 +br i1 %icmp_295, label %body1, label %entry_inline0 + +body1: +%getelementptr_101 = getelementptr [3 x float], ptr %getelementptr_283, i32 0, i32 %phi_217 +%itofp_103 = sitofp i32 %phi_217 to float +store float %itofp_103, ptr %getelementptr_101 +%getelementptr_106 = getelementptr [3 x float], ptr %getelementptr_286, i32 0, i32 %phi_217 +store float %itofp_103, ptr %getelementptr_106 +%getelementptr_111 = getelementptr [3 x float], ptr %getelementptr_284, i32 0, i32 %phi_217 +store float %itofp_103, ptr %getelementptr_111 +%getelementptr_116 = getelementptr [3 x float], ptr %getelementptr_282, i32 0, i32 %phi_217 +store float %itofp_103, ptr %getelementptr_116 +%getelementptr_121 = getelementptr [3 x float], ptr %getelementptr_285, i32 0, i32 %phi_217 +store float %itofp_103, ptr %getelementptr_121 +%getelementptr_126 = getelementptr [3 x float], ptr %getelementptr_281, i32 0, i32 %phi_217 +store float %itofp_103, ptr %getelementptr_126 +%Add_131 = add i32 %phi_217, 1 +br label %cond0 + +entry_inline0: +call void @thrd_join() +%getelementptr_297 = getelementptr [3 x float], ptr %alloca_86, i32 0 +%getelementptr_298 = getelementptr [3 x float], ptr %alloca_90, i32 0 +%getelementptr_299 = getelementptr [3 x float], ptr %alloca_88, i32 0 +%getelementptr_300 = getelementptr [3 x float], ptr %alloca_93, i32 0 +%getelementptr_301 = getelementptr [3 x float], ptr %alloca_92, i32 0 +%getelementptr_302 = getelementptr [3 x float], ptr %alloca_89, i32 0 +%getelementptr_303 = getelementptr [3 x float], ptr %alloca_85, i32 0 +%getelementptr_304 = getelementptr [3 x float], ptr %alloca_87, i32 0 +%getelementptr_305 = getelementptr [6 x float], ptr %alloca_91, i32 0 +%call_306 = call i32 @thrd_create(i32 4) +%Mul_308 = mul i32 %call_306, 3 +%SDiv_309 = sdiv i32 %Mul_308, 5 +%Add_311 = add i32 %Mul_308, 3 +%SDiv_312 = sdiv i32 %Add_311, 5 +br label %cond0_inline1 + +cond0_inline1: +%phi_238 = phi i32 [%SDiv_309, %entry_inline0], [%Add_267, %body1_inline4] +%icmp_314 = icmp slt i32 %phi_238, %SDiv_312 +br i1 %icmp_314, label %body1_inline4, label %final2_split5 + +body1_inline4: +%getelementptr_272 = getelementptr [3 x float], ptr %getelementptr_303, i32 0, i32 %phi_238 +%getelementptr_273 = getelementptr [3 x float], ptr %getelementptr_299, i32 0, i32 %phi_238 +%load_248 = load float, ptr %getelementptr_272 +%load_249 = load float, ptr %getelementptr_273 +%FSub_250 = fsub float %load_248, %load_249 +%getelementptr_274 = getelementptr [6 x float], ptr %getelementptr_305, i32 0, i32 %phi_238 +store float %FSub_250, ptr %getelementptr_274 +%getelementptr_275 = getelementptr [3 x float], ptr %getelementptr_297, i32 0, i32 %phi_238 +%getelementptr_276 = getelementptr [3 x float], ptr %getelementptr_302, i32 0, i32 %phi_238 +%load_255 = load float, ptr %getelementptr_275 +%load_256 = load float, ptr %getelementptr_276 +%FSub_257 = fsub float %load_255, %load_256 +%getelementptr_277 = getelementptr [3 x float], ptr %getelementptr_301, i32 0, i32 %phi_238 +store float %FSub_257, ptr %getelementptr_277 +%getelementptr_278 = getelementptr [3 x float], ptr %getelementptr_304, i32 0, i32 %phi_238 +%getelementptr_279 = getelementptr [3 x float], ptr %getelementptr_298, i32 0, i32 %phi_238 +%load_262 = load float, ptr %getelementptr_278 +%load_263 = load float, ptr %getelementptr_279 +%FSub_264 = fsub float %load_262, %load_263 +%getelementptr_280 = getelementptr [3 x float], ptr %getelementptr_300, i32 0, i32 %phi_238 +store float %FSub_264, ptr %getelementptr_280 +%Add_267 = add i32 %phi_238, 1 +br label %cond0_inline1 + +final2_split5: +call void @thrd_join() +%getelementptr_316 = getelementptr [6 x float], ptr %alloca_91, i32 0 +%call_317 = call i32 @thrd_create(i32 4) +%Mul_319 = mul i32 %call_317, 3 +%SDiv_320 = sdiv i32 %Mul_319, 5 +%Add_322 = add i32 %Mul_319, 3 +%SDiv_323 = sdiv i32 %Add_322, 5 +br label %cond3 + +cond3: +%phi_218 = phi i32 [%SDiv_320, %final2_split5], [%Add_161, %body4] +%icmp_325 = icmp slt i32 %phi_218, %SDiv_323 +br i1 %icmp_325, label %body4, label %final5 + +body4: +%getelementptr_154 = getelementptr [6 x float], ptr %getelementptr_316, i32 0, i32 %phi_218 +%load_155 = load float, ptr %getelementptr_154 +%fptoi_156 = fptosi float %load_155 to i32 +call void @putint(i32 %fptoi_156) +%Add_161 = add i32 %phi_218, 1 +br label %cond3 + +final5: +call void @thrd_join() +call void @putch(i32 10) +%getelementptr_327 = getelementptr [3 x float], ptr %alloca_92, i32 0 +%call_328 = call i32 @thrd_create(i32 4) +%Mul_330 = mul i32 %call_328, 3 +%SDiv_331 = sdiv i32 %Mul_330, 5 +%Add_333 = add i32 %Mul_330, 3 +%SDiv_334 = sdiv i32 %Add_333, 5 +br label %cond6 + +cond6: +%phi_219 = phi i32 [%SDiv_331, %final5], [%Add_183, %body7] +%icmp_336 = icmp slt i32 %phi_219, %SDiv_334 +br i1 %icmp_336, label %body7, label %final8 + +body7: +%getelementptr_176 = getelementptr [3 x float], ptr %getelementptr_327, i32 0, i32 %phi_219 +%load_177 = load float, ptr %getelementptr_176 +%fptoi_178 = fptosi float %load_177 to i32 +call void @putint(i32 %fptoi_178) +%Add_183 = add i32 %phi_219, 1 +br label %cond6 + +final8: +call void @thrd_join() +call void @putch(i32 10) +%getelementptr_338 = getelementptr [3 x float], ptr %alloca_93, i32 0 +%call_339 = call i32 @thrd_create(i32 4) +%Mul_341 = mul i32 %call_339, 3 +%SDiv_342 = sdiv i32 %Mul_341, 5 +%Add_344 = add i32 %Mul_341, 3 +%SDiv_345 = sdiv i32 %Add_344, 5 +br label %cond9 + +cond9: +%phi_220 = phi i32 [%SDiv_342, %final8], [%Add_205, %body10] +%icmp_347 = icmp slt i32 %phi_220, %SDiv_345 +br i1 %icmp_347, label %body10, label %exit + +body10: +%getelementptr_198 = getelementptr [3 x float], ptr %getelementptr_338, i32 0, i32 %phi_220 +%load_199 = load float, ptr %getelementptr_198 +%fptoi_200 = fptosi float %load_199 to i32 +call void @putint(i32 %fptoi_200) +%Add_205 = add i32 %phi_220, 1 +br label %cond9 + +exit: +call void @thrd_join() +call void @putch(i32 10) +ret i32 0 + + +} diff --git a/quick_test/ll/98_matrix_mul.ll b/quick_test/ll/98_matrix_mul.ll new file mode 100644 index 0000000..fa0364c --- /dev/null +++ b/quick_test/ll/98_matrix_mul.ll @@ -0,0 +1,245 @@ +@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 + + +} diff --git a/quick_test/ll/99_matrix_tran.ll b/quick_test/ll/99_matrix_tran.ll new file mode 100644 index 0000000..a1dc399 --- /dev/null +++ b/quick_test/ll/99_matrix_tran.ll @@ -0,0 +1,182 @@ +@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_89 = alloca [3 x float] +%alloca_90 = alloca [3 x float] +%alloca_91 = alloca [3 x float] +%alloca_92 = alloca [3 x float] +%alloca_93 = alloca [3 x float] +%alloca_94 = alloca [3 x float] +%alloca_95 = alloca [6 x float] +%alloca_96 = alloca [3 x float] +%alloca_97 = alloca [3 x float] +%getelementptr_303 = getelementptr [3 x float], ptr %alloca_94, i32 0 +%getelementptr_304 = getelementptr [3 x float], ptr %alloca_90, i32 0 +%getelementptr_305 = getelementptr [3 x float], ptr %alloca_91, i32 0 +%getelementptr_306 = getelementptr [3 x float], ptr %alloca_89, i32 0 +%getelementptr_307 = getelementptr [3 x float], ptr %alloca_92, i32 0 +%getelementptr_308 = getelementptr [3 x float], ptr %alloca_93, i32 0 +%call_309 = call i32 @thrd_create(i32 4) +%Mul_311 = mul i32 %call_309, 3 +%SDiv_312 = sdiv i32 %Mul_311, 5 +%Add_314 = add i32 %Mul_311, 3 +%SDiv_315 = sdiv i32 %Add_314, 5 +br label %cond0 + +cond0: +%phi_224 = phi i32 [%SDiv_312, %entry], [%Add_135, %body1] +%icmp_317 = icmp slt i32 %phi_224, %SDiv_315 +br i1 %icmp_317, label %body1, label %final2_split2 + +body1: +%getelementptr_105 = getelementptr [3 x float], ptr %getelementptr_306, i32 0, i32 %phi_224 +%itofp_107 = sitofp i32 %phi_224 to float +store float %itofp_107, ptr %getelementptr_105 +%getelementptr_110 = getelementptr [3 x float], ptr %getelementptr_304, i32 0, i32 %phi_224 +store float %itofp_107, ptr %getelementptr_110 +%getelementptr_115 = getelementptr [3 x float], ptr %getelementptr_305, i32 0, i32 %phi_224 +store float %itofp_107, ptr %getelementptr_115 +%getelementptr_120 = getelementptr [3 x float], ptr %getelementptr_307, i32 0, i32 %phi_224 +store float %itofp_107, ptr %getelementptr_120 +%getelementptr_125 = getelementptr [3 x float], ptr %getelementptr_308, i32 0, i32 %phi_224 +store float %itofp_107, ptr %getelementptr_125 +%getelementptr_130 = getelementptr [3 x float], ptr %getelementptr_303, i32 0, i32 %phi_224 +store float %itofp_107, ptr %getelementptr_130 +%Add_135 = add i32 %phi_224, 1 +br label %cond0 + +final2_split2: +call void @thrd_join() +%getelementptr_285 = getelementptr [3 x float], ptr %alloca_91, i32 0, i32 1 +%getelementptr_286 = getelementptr [3 x float], ptr %alloca_96, i32 0, i32 2 +%load_245 = load float, ptr %getelementptr_285 +store float %load_245, ptr %getelementptr_286 +%getelementptr_287 = getelementptr [3 x float], ptr %alloca_90, i32 0, i32 2 +%getelementptr_288 = getelementptr [3 x float], ptr %alloca_97, i32 0, i32 1 +%load_249 = load float, ptr %getelementptr_287 +store float %load_249, ptr %getelementptr_288 +%getelementptr_289 = getelementptr [3 x float], ptr %alloca_90, i32 0, i32 0 +%getelementptr_290 = getelementptr [6 x float], ptr %alloca_95, i32 0, i32 1 +%load_253 = load float, ptr %getelementptr_289 +store float %load_253, ptr %getelementptr_290 +%getelementptr_291 = getelementptr [3 x float], ptr %alloca_91, i32 0, i32 0 +%getelementptr_292 = getelementptr [6 x float], ptr %alloca_95, i32 0, i32 2 +%load_257 = load float, ptr %getelementptr_291 +store float %load_257, ptr %getelementptr_292 +%getelementptr_293 = getelementptr [3 x float], ptr %alloca_89, i32 0, i32 1 +%getelementptr_294 = getelementptr [3 x float], ptr %alloca_96, i32 0, i32 0 +%load_261 = load float, ptr %getelementptr_293 +store float %load_261, ptr %getelementptr_294 +%getelementptr_295 = getelementptr [3 x float], ptr %alloca_89, i32 0, i32 2 +%getelementptr_296 = getelementptr [3 x float], ptr %alloca_97, i32 0, i32 0 +%load_265 = load float, ptr %getelementptr_295 +store float %load_265, ptr %getelementptr_296 +%getelementptr_297 = getelementptr [3 x float], ptr %alloca_90, i32 0, i32 1 +%getelementptr_298 = getelementptr [3 x float], ptr %alloca_96, i32 0, i32 1 +%load_269 = load float, ptr %getelementptr_297 +store float %load_269, ptr %getelementptr_298 +%getelementptr_299 = getelementptr [3 x float], ptr %alloca_91, i32 0, i32 2 +%getelementptr_300 = getelementptr [3 x float], ptr %alloca_97, i32 0, i32 2 +%load_273 = load float, ptr %getelementptr_299 +store float %load_273, ptr %getelementptr_300 +%getelementptr_301 = getelementptr [3 x float], ptr %alloca_89, i32 0, i32 0 +%getelementptr_302 = getelementptr [6 x float], ptr %alloca_95, i32 0, i32 0 +%load_277 = load float, ptr %getelementptr_301 +store float %load_277, ptr %getelementptr_302 +%getelementptr_319 = getelementptr [6 x float], ptr %alloca_95, i32 0 +%call_320 = call i32 @thrd_create(i32 4) +%Mul_322 = mul i32 %call_320, 3 +%SDiv_323 = sdiv i32 %Mul_322, 5 +%Add_325 = add i32 %Mul_322, 3 +%SDiv_326 = sdiv i32 %Add_325, 5 +br label %cond3 + +cond3: +%phi_225 = phi i32 [%SDiv_323, %final2_split2], [%Add_166, %body4] +%icmp_328 = icmp slt i32 %phi_225, %SDiv_326 +br i1 %icmp_328, label %body4, label %final5 + +body4: +%getelementptr_159 = getelementptr [6 x float], ptr %getelementptr_319, i32 0, i32 %phi_225 +%load_160 = load float, ptr %getelementptr_159 +%fptoi_161 = fptosi float %load_160 to i32 +call void @putint(i32 %fptoi_161) +%Add_166 = add i32 %phi_225, 1 +br label %cond3 + +final5: +call void @thrd_join() +call void @putch(i32 10) +%getelementptr_330 = getelementptr [3 x float], ptr %alloca_96, i32 0 +%call_331 = call i32 @thrd_create(i32 4) +%Mul_333 = mul i32 %call_331, 3 +%SDiv_334 = sdiv i32 %Mul_333, 5 +%Add_336 = add i32 %Mul_333, 3 +%SDiv_337 = sdiv i32 %Add_336, 5 +br label %cond6 + +cond6: +%phi_226 = phi i32 [%SDiv_334, %final5], [%Add_189, %body7] +%icmp_339 = icmp slt i32 %phi_226, %SDiv_337 +br i1 %icmp_339, label %body7, label %final8 + +body7: +%getelementptr_182 = getelementptr [3 x float], ptr %getelementptr_330, i32 0, i32 %phi_226 +%load_183 = load float, ptr %getelementptr_182 +%fptoi_184 = fptosi float %load_183 to i32 +call void @putint(i32 %fptoi_184) +%Add_189 = add i32 %phi_226, 1 +br label %cond6 + +final8: +call void @thrd_join() +call void @putch(i32 10) +%getelementptr_341 = getelementptr [3 x float], ptr %alloca_97, i32 0 +%call_342 = call i32 @thrd_create(i32 4) +%Mul_344 = mul i32 %call_342, 3 +%SDiv_345 = sdiv i32 %Mul_344, 5 +%Add_347 = add i32 %Mul_344, 3 +%SDiv_348 = sdiv i32 %Add_347, 5 +br label %cond9 + +cond9: +%phi_227 = phi i32 [%SDiv_345, %final8], [%Add_212, %body10] +%icmp_350 = icmp slt i32 %phi_227, %SDiv_348 +br i1 %icmp_350, label %body10, label %exit + +body10: +%getelementptr_205 = getelementptr [3 x float], ptr %getelementptr_341, i32 0, i32 %phi_227 +%load_206 = load float, ptr %getelementptr_205 +%fptoi_207 = fptosi float %load_206 to i32 +call void @putint(i32 %fptoi_207) +%Add_212 = add i32 %phi_227, 1 +br label %cond9 + +exit: +call void @thrd_join() +call void @putch(i32 10) +ret i32 0 + + +} diff --git a/quick_test/log/3.log b/quick_test/log/3.log new file mode 100644 index 0000000..0b9bfea --- /dev/null +++ b/quick_test/log/3.log @@ -0,0 +1,109 @@ +stdout: +## Pass mem2reg [CHANGED] + +Time elapsed = 109 µs + +## Pass func_inline + +Time elapsed = 4 µs + +## Pass symbolic_eval + +Time elapsed = 17 µs + +## Pass load_elim + +Time elapsed = 9 µs + +## Pass store_elim [CHANGED] + +Time elapsed = 12 µs + +## Pass dead_code_elim + +Time elapsed = 6 µs + +## Pass symbolic_eval + +Time elapsed = 12 µs + +## Pass load_elim + +Time elapsed = 6 µs + +## Pass store_elim + +Time elapsed = 6 µs + +## Pass dead_code_elim + +Time elapsed = 4 µs + +## Pass redundance_elim + +Time elapsed = 35 µs + +## Pass symbolic_eval + +Time elapsed = 12 µs + +## Pass block_fuse [CHANGED] + +Time elapsed = 8 µs + +## Pass func_inline + +Time elapsed = 1 µs + +## Pass symbolic_eval + +Time elapsed = 9 µs + +## Pass load_elim + +Time elapsed = 6 µs + +## Pass store_elim + +Time elapsed = 7 µs + +## Pass dead_code_elim + +Time elapsed = 4 µs + +## Pass redundance_elim + +Time elapsed = 25 µs + +## Pass symbolic_eval + +Time elapsed = 11 µs + +## Pass block_fuse + +Time elapsed = 3 µs + +[INFO] loop entry is made candidate Candidate { + indvar: %phi_30 = phi i32 [0, %entry], [%Add_14, %body1], + exit: br i1 %icmp_24, label %body1, label %exit, + init_val: 0, + init_bb: entry, + exit_val: 8, + exit_bb: exit, +}! +## Pass sink_code [CHANGED] + +Time elapsed = 48 µs + +## Pass symbolic_eval [CHANGED] + +Time elapsed = 33 µs + + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us diff --git a/quick_test/log/6.log b/quick_test/log/6.log new file mode 100644 index 0000000..ad10945 --- /dev/null +++ b/quick_test/log/6.log @@ -0,0 +1,101 @@ +stdout: +## Pass mem2reg [CHANGED] + +Time elapsed = 72 µs + +## Pass func_inline + +Time elapsed = 5 µs + +## Pass symbolic_eval + +Time elapsed = 9 µs + +## Pass load_elim + +Time elapsed = 8 µs + +## Pass store_elim [CHANGED] + +Time elapsed = 12 µs + +## Pass dead_code_elim + +Time elapsed = 4 µs + +## Pass symbolic_eval + +Time elapsed = 5 µs + +## Pass load_elim + +Time elapsed = 5 µs + +## Pass store_elim + +Time elapsed = 5 µs + +## Pass dead_code_elim + +Time elapsed = 2 µs + +## Pass redundance_elim [CHANGED] + +Time elapsed = 42 µs + +## Pass symbolic_eval + +Time elapsed = 5 µs + +## Pass block_fuse [CHANGED] + +Time elapsed = 6 µs + +## Pass func_inline + +Time elapsed = 1 µs + +## Pass symbolic_eval + +Time elapsed = 3 µs + +## Pass load_elim + +Time elapsed = 5 µs + +## Pass store_elim + +Time elapsed = 5 µs + +## Pass dead_code_elim + +Time elapsed = 2 µs + +## Pass redundance_elim + +Time elapsed = 13 µs + +## Pass symbolic_eval + +Time elapsed = 3 µs + +## Pass block_fuse + +Time elapsed = 1 µs + +## Pass sink_code [CHANGED] + +Time elapsed = 16 µs + +## Pass symbolic_eval + +Time elapsed = 2 µs + + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us diff --git a/quick_test/log/7.log b/quick_test/log/7.log new file mode 100644 index 0000000..2b2eebf --- /dev/null +++ b/quick_test/log/7.log @@ -0,0 +1,101 @@ +stdout: +## Pass mem2reg [CHANGED] + +Time elapsed = 72 µs + +## Pass func_inline + +Time elapsed = 4 µs + +## Pass symbolic_eval + +Time elapsed = 9 µs + +## Pass load_elim + +Time elapsed = 13 µs + +## Pass store_elim [CHANGED] + +Time elapsed = 13 µs + +## Pass dead_code_elim + +Time elapsed = 5 µs + +## Pass symbolic_eval + +Time elapsed = 5 µs + +## Pass load_elim + +Time elapsed = 8 µs + +## Pass store_elim + +Time elapsed = 6 µs + +## Pass dead_code_elim + +Time elapsed = 3 µs + +## Pass redundance_elim [CHANGED] + +Time elapsed = 58 µs + +## Pass symbolic_eval + +Time elapsed = 6 µs + +## Pass block_fuse [CHANGED] + +Time elapsed = 7 µs + +## Pass func_inline + +Time elapsed = 2 µs + +## Pass symbolic_eval + +Time elapsed = 3 µs + +## Pass load_elim + +Time elapsed = 8 µs + +## Pass store_elim + +Time elapsed = 7 µs + +## Pass dead_code_elim + +Time elapsed = 3 µs + +## Pass redundance_elim + +Time elapsed = 23 µs + +## Pass symbolic_eval + +Time elapsed = 4 µs + +## Pass block_fuse + +Time elapsed = 1 µs + +## Pass sink_code [CHANGED] + +Time elapsed = 18 µs + +## Pass symbolic_eval + +Time elapsed = 3 µs + + +stderr: + +stdout: + +stderr: + +TOTAL: 0H-0M-0S-0us diff --git a/quick_test/log/96_matrix_add.log b/quick_test/log/96_matrix_add.log new file mode 100644 index 0000000..9b9caa2 --- /dev/null +++ b/quick_test/log/96_matrix_add.log @@ -0,0 +1,110 @@ +stdout: +## Pass mem2reg [CHANGED] + +Time elapsed = 182 µs + +## Pass func_inline + +Time elapsed = 4 µs + +## Pass symbolic_eval + +Time elapsed = 31 µs + +## Pass load_elim [CHANGED] + +Time elapsed = 28 µs + +## Pass store_elim [CHANGED] + +Time elapsed = 27 µs + +## Pass dead_code_elim [CHANGED] + +Time elapsed = 12 µs + +## Pass symbolic_eval + +Time elapsed = 25 µs + +## Pass load_elim + +Time elapsed = 19 µs + +## Pass store_elim + +Time elapsed = 22 µs + +## Pass dead_code_elim + +Time elapsed = 9 µs + +## Pass redundance_elim [CHANGED] + +Time elapsed = 133 µs + +## Pass symbolic_eval + +Time elapsed = 27 µs + +## Pass block_fuse [CHANGED] + +Time elapsed = 11 µs + +## Pass func_inline + +Time elapsed = 2 µs + +## Pass symbolic_eval + +Time elapsed = 20 µs + +## Pass load_elim + +Time elapsed = 18 µs + +## Pass store_elim + +Time elapsed = 23 µs + +## Pass dead_code_elim + +Time elapsed = 8 µs + +## Pass redundance_elim + +Time elapsed = 88 µs + +## Pass symbolic_eval + +Time elapsed = 28 µs + +## Pass block_fuse + +Time elapsed = 6 µs + +[INFO] loop entry fails because %load_73 = load i32, ptr @M is not calculated before loop +[INFO] loop entry does not have indvar +[INFO] loop entry is made candidate Candidate { + indvar: %phi_142 = phi i32 [0, %entry], [%Add_132, %body1], + exit: br i1 %icmp_137, label %body1, label %exit, + init_val: 0, + init_bb: entry, + exit_val: 3, + exit_bb: exit, +}! +## Pass sink_code [CHANGED] + +Time elapsed = 92 µs + +## Pass symbolic_eval [CHANGED] + +Time elapsed = 43 µs + + +stderr: + +stdout: + +stderr: + diff --git a/quick_test/log/97_matrix_sub.log b/quick_test/log/97_matrix_sub.log new file mode 100644 index 0000000..9d081e5 --- /dev/null +++ b/quick_test/log/97_matrix_sub.log @@ -0,0 +1,140 @@ +stdout: +## Pass mem2reg [CHANGED] + +Time elapsed = 322 µs + +## Pass func_inline [CHANGED] + +Time elapsed = 106 µs + +## Pass symbolic_eval [CHANGED] + +Time elapsed = 73 µs + +## Pass load_elim + +Time elapsed = 25 µs + +## Pass store_elim [CHANGED] + +Time elapsed = 68 µs + +## Pass dead_code_elim + +Time elapsed = 23 µs + +## Pass symbolic_eval + +Time elapsed = 53 µs + +## Pass load_elim + +Time elapsed = 21 µs + +## Pass store_elim + +Time elapsed = 43 µs + +## Pass dead_code_elim + +Time elapsed = 21 µs + +## Pass redundance_elim [CHANGED] + +Time elapsed = 272 µs + +## Pass symbolic_eval + +Time elapsed = 54 µs + +## Pass block_fuse [CHANGED] + +Time elapsed = 31 µs + +## Pass func_inline + +Time elapsed = 6 µs + +## Pass symbolic_eval + +Time elapsed = 41 µs + +## Pass load_elim + +Time elapsed = 19 µs + +## Pass store_elim + +Time elapsed = 41 µs + +## Pass dead_code_elim + +Time elapsed = 20 µs + +## Pass redundance_elim + +Time elapsed = 151 µs + +## Pass symbolic_eval + +Time elapsed = 44 µs + +## Pass block_fuse + +Time elapsed = 12 µs + +[INFO] loop entry is made candidate Candidate { + indvar: %phi_217 = phi i32 [0, %entry], [%Add_131, %body1], + exit: br i1 %icmp_135, label %body1, label %entry_inline0, + init_val: 0, + init_bb: entry, + exit_val: 3, + exit_bb: entry_inline0, +}! +[INFO] loop entry_inline0 is made candidate Candidate { + indvar: %phi_238 = phi i32 [0, %entry_inline0], [%Add_267, %body1_inline4], + exit: br i1 %icmp_239, label %body1_inline4, label %final2_split5, + init_val: 0, + init_bb: entry_inline0, + exit_val: 3, + exit_bb: final2_split5, +}! +[INFO] loop final2_split5 is made candidate Candidate { + indvar: %phi_218 = phi i32 [0, %final2_split5], [%Add_161, %body4], + exit: br i1 %icmp_165, label %body4, label %final5, + init_val: 0, + init_bb: final2_split5, + exit_val: 3, + exit_bb: final5, +}! +[INFO] loop final5 is made candidate Candidate { + indvar: %phi_219 = phi i32 [0, %final5], [%Add_183, %body7], + exit: br i1 %icmp_187, label %body7, label %final8, + init_val: 0, + init_bb: final5, + exit_val: 3, + exit_bb: final8, +}! +[INFO] loop final8 is made candidate Candidate { + indvar: %phi_220 = phi i32 [0, %final8], [%Add_205, %body10], + exit: br i1 %icmp_209, label %body10, label %exit, + init_val: 0, + init_bb: final8, + exit_val: 3, + exit_bb: exit, +}! +## Pass sink_code [CHANGED] + +Time elapsed = 132 µs + +## Pass symbolic_eval [CHANGED] + +Time elapsed = 95 µs + + +stderr: + +stdout: + +stderr: + diff --git a/quick_test/log/98_matrix_mul.log b/quick_test/log/98_matrix_mul.log new file mode 100644 index 0000000..1b3033d --- /dev/null +++ b/quick_test/log/98_matrix_mul.log @@ -0,0 +1,132 @@ +stdout: +## Pass mem2reg [CHANGED] + +Time elapsed = 346 µs + +## Pass func_inline [CHANGED] + +Time elapsed = 244 µs + +## Pass symbolic_eval [CHANGED] + +Time elapsed = 143 µs + +## Pass load_elim [CHANGED] + +Time elapsed = 85 µs + +## Pass store_elim [CHANGED] + +Time elapsed = 101 µs + +## Pass dead_code_elim + +Time elapsed = 28 µs + +## Pass symbolic_eval + +Time elapsed = 64 µs + +## Pass load_elim + +Time elapsed = 58 µs + +## Pass store_elim + +Time elapsed = 66 µs + +## Pass dead_code_elim + +Time elapsed = 26 µs + +## Pass redundance_elim [CHANGED] + +Time elapsed = 672 µs + +## Pass symbolic_eval + +Time elapsed = 58 µs + +## Pass block_fuse [CHANGED] + +Time elapsed = 35 µs + +## Pass func_inline + +Time elapsed = 3 µs + +## Pass symbolic_eval + +Time elapsed = 39 µs + +## Pass load_elim + +Time elapsed = 32 µs + +## Pass store_elim + +Time elapsed = 49 µs + +## Pass dead_code_elim + +Time elapsed = 18 µs + +## Pass redundance_elim + +Time elapsed = 284 µs + +## Pass symbolic_eval + +Time elapsed = 43 µs + +## Pass block_fuse + +Time elapsed = 9 µs + +[INFO] loop entry is made candidate Candidate { + indvar: %phi_404 = phi i32 [0, %entry], [%Add_315, %body1], + exit: br i1 %icmp_320, label %body1, label %final2_split2, + init_val: 0, + init_bb: entry, + exit_val: 3, + exit_bb: final2_split2, +}! +[INFO] loop final2_split2 is made candidate Candidate { + indvar: %phi_405 = phi i32 [0, %final2_split2], [%Add_346, %body4], + exit: br i1 %icmp_351, label %body4, label %final5, + init_val: 0, + init_bb: final2_split2, + exit_val: 3, + exit_bb: final5, +}! +[INFO] loop final5 is made candidate Candidate { + indvar: %phi_406 = phi i32 [0, %final5], [%Add_369, %body7], + exit: br i1 %icmp_374, label %body7, label %final8, + init_val: 0, + init_bb: final5, + exit_val: 3, + exit_bb: final8, +}! +[INFO] loop final8 is made candidate Candidate { + indvar: %phi_407 = phi i32 [0, %final8], [%Add_392, %body10], + exit: br i1 %icmp_397, label %body10, label %exit, + init_val: 0, + init_bb: final8, + exit_val: 3, + exit_bb: exit, +}! +## Pass sink_code [CHANGED] + +Time elapsed = 134 µs + +## Pass symbolic_eval [CHANGED] + +Time elapsed = 69 µs + + +stderr: + +stdout: + +stderr: + diff --git a/quick_test/log/99_matrix_tran.log b/quick_test/log/99_matrix_tran.log new file mode 100644 index 0000000..7fcbfae --- /dev/null +++ b/quick_test/log/99_matrix_tran.log @@ -0,0 +1,132 @@ +stdout: +## Pass mem2reg [CHANGED] + +Time elapsed = 420 µs + +## Pass func_inline [CHANGED] + +Time elapsed = 150 µs + +## Pass symbolic_eval [CHANGED] + +Time elapsed = 92 µs + +## Pass load_elim [CHANGED] + +Time elapsed = 62 µs + +## Pass store_elim [CHANGED] + +Time elapsed = 79 µs + +## Pass dead_code_elim + +Time elapsed = 24 µs + +## Pass symbolic_eval + +Time elapsed = 46 µs + +## Pass load_elim + +Time elapsed = 30 µs + +## Pass store_elim + +Time elapsed = 54 µs + +## Pass dead_code_elim + +Time elapsed = 20 µs + +## Pass redundance_elim [CHANGED] + +Time elapsed = 235 µs + +## Pass symbolic_eval + +Time elapsed = 45 µs + +## Pass block_fuse [CHANGED] + +Time elapsed = 25 µs + +## Pass func_inline + +Time elapsed = 2 µs + +## Pass symbolic_eval + +Time elapsed = 30 µs + +## Pass load_elim + +Time elapsed = 29 µs + +## Pass store_elim + +Time elapsed = 55 µs + +## Pass dead_code_elim + +Time elapsed = 17 µs + +## Pass redundance_elim + +Time elapsed = 166 µs + +## Pass symbolic_eval + +Time elapsed = 34 µs + +## Pass block_fuse + +Time elapsed = 9 µs + +[INFO] loop entry is made candidate Candidate { + indvar: %phi_224 = phi i32 [0, %entry], [%Add_135, %body1], + exit: br i1 %icmp_140, label %body1, label %final2_split2, + init_val: 0, + init_bb: entry, + exit_val: 3, + exit_bb: final2_split2, +}! +[INFO] loop final2_split2 is made candidate Candidate { + indvar: %phi_225 = phi i32 [0, %final2_split2], [%Add_166, %body4], + exit: br i1 %icmp_171, label %body4, label %final5, + init_val: 0, + init_bb: final2_split2, + exit_val: 3, + exit_bb: final5, +}! +[INFO] loop final5 is made candidate Candidate { + indvar: %phi_226 = phi i32 [0, %final5], [%Add_189, %body7], + exit: br i1 %icmp_194, label %body7, label %final8, + init_val: 0, + init_bb: final5, + exit_val: 3, + exit_bb: final8, +}! +[INFO] loop final8 is made candidate Candidate { + indvar: %phi_227 = phi i32 [0, %final8], [%Add_212, %body10], + exit: br i1 %icmp_217, label %body10, label %exit, + init_val: 0, + init_bb: final8, + exit_val: 3, + exit_bb: exit, +}! +## Pass sink_code [CHANGED] + +Time elapsed = 103 µs + +## Pass symbolic_eval [CHANGED] + +Time elapsed = 70 µs + + +stderr: + +stdout: + +stderr: + diff --git a/quick_test/output/3.out b/quick_test/output/3.out new file mode 100644 index 0000000..f05272c --- /dev/null +++ b/quick_test/output/3.out @@ -0,0 +1,3 @@ +8: 0 0 0 0 0 0 0 0 + +0 \ No newline at end of file diff --git a/quick_test/output/6.out b/quick_test/output/6.out new file mode 100644 index 0000000..aba0265 --- /dev/null +++ b/quick_test/output/6.out @@ -0,0 +1,3 @@ +8: 22 2 8 10 2 4 0 0 + +0 \ No newline at end of file diff --git a/quick_test/output/7.out b/quick_test/output/7.out new file mode 100644 index 0000000..1be4e05 --- /dev/null +++ b/quick_test/output/7.out @@ -0,0 +1,4 @@ +8: 2 2 8 10 2 4 0 0 +8: 4 4 16 20 4 4 0 0 + +0 \ No newline at end of file diff --git a/quick_test/output/96_matrix_add.out b/quick_test/output/96_matrix_add.out new file mode 100644 index 0000000..88589df --- /dev/null +++ b/quick_test/output/96_matrix_add.out @@ -0,0 +1,2 @@ + +ExitStatus(unix_wait_status(139)) \ No newline at end of file diff --git a/quick_test/output/97_matrix_sub.out b/quick_test/output/97_matrix_sub.out new file mode 100644 index 0000000..88589df --- /dev/null +++ b/quick_test/output/97_matrix_sub.out @@ -0,0 +1,2 @@ + +ExitStatus(unix_wait_status(139)) \ No newline at end of file diff --git a/quick_test/output/98_matrix_mul.out b/quick_test/output/98_matrix_mul.out new file mode 100644 index 0000000..88589df --- /dev/null +++ b/quick_test/output/98_matrix_mul.out @@ -0,0 +1,2 @@ + +ExitStatus(unix_wait_status(139)) \ No newline at end of file diff --git a/quick_test/output/99_matrix_tran.out b/quick_test/output/99_matrix_tran.out new file mode 100644 index 0000000..88589df --- /dev/null +++ b/quick_test/output/99_matrix_tran.out @@ -0,0 +1,2 @@ + +ExitStatus(unix_wait_status(139)) \ No newline at end of file diff --git a/quick_test/sy/3.sy b/quick_test/sy/3.sy new file mode 100644 index 0000000..be4dede --- /dev/null +++ b/quick_test/sy/3.sy @@ -0,0 +1,17 @@ +#include "../../lib/thrd.h" +#include "../../lib/sylib.h" + +int A[9]; +int B[9]; +int main() +{ + int i = 0; + getarray(A); + while (i < 8) + { + i = i + 1; + B[i] = A[i]; + } + putarray(8, B); + return 0; +} \ No newline at end of file diff --git a/quick_test/sy/6.sy b/quick_test/sy/6.sy new file mode 100644 index 0000000..8b038fb --- /dev/null +++ b/quick_test/sy/6.sy @@ -0,0 +1,13 @@ +#include "../../lib/thrd.h" +#include "../../lib/sylib.h" + +int A[9] = {1, 1, 4, 5, 1, 4}; +int main() +{ + A[0] = 11; + int n = thrd_create(4); + A[n] = A[n] * 2; + thrd_join(); + putarray(8, A); + return 0; +} \ No newline at end of file diff --git a/quick_test/sy/7.sy b/quick_test/sy/7.sy new file mode 100644 index 0000000..bef21ca --- /dev/null +++ b/quick_test/sy/7.sy @@ -0,0 +1,16 @@ +#include "../../lib/thrd.h" +#include "../../lib/sylib.h" + +int A[9] = {1, 1, 4, 5, 1, 4}; +int main() +{ + int n = thrd_create(4); + A[n] = A[n] * 2; + thrd_join(); + putarray(8, A); + int m = thrd_create(4); + A[m] = A[m] * 2; + thrd_join(); + putarray(8, A); + return 0; +} \ No newline at end of file diff --git a/quick_test/sy/96_matrix_add.sy b/quick_test/sy/96_matrix_add.sy new file mode 100644 index 0000000..cb18f86 --- /dev/null +++ b/quick_test/sy/96_matrix_add.sy @@ -0,0 +1,69 @@ +#include "../../lib/sylib.h" +int M; +int L; +int N; + +int add(float a0[], float a1[], float a2[], float b0[], float b1[], float b2[], float c0[], float c1[], float c2[]) +{ + int i; + i = 0; + while (i < M) + { + c0[i] = a0[i] + b0[i]; + c1[i] = a1[i] + b1[i]; + c2[i] = a2[i] + b2[i]; + i = i + 1; + } + + return 0; +} + +int main() +{ + N = 3; + M = 3; + L = 3; + float a0[3], a1[3], a2[3], b0[3], b1[3], b2[3], c0[6], c1[3], c2[3]; + int i; + i = 0; + while (i < M) + { + a0[i] = i; + a1[i] = i; + a2[i] = i; + b0[i] = i; + b1[i] = i; + b2[i] = i; + i = i + 1; + } + // i = add(a0, a1, a2, b0, b1, b2, c0, c1, c2); + // int x; + // while(i