From 5bfe9a6fb2b03626f5c4e659d62f492e2570d30a Mon Sep 17 00:00:00 2001 From: 5eqn <491100866@qq.com> Date: Mon, 19 Aug 2024 10:53:00 +0800 Subject: [PATCH] thrd test --- quick_test/96_matrix_add_bad.ll | 111 +++++ quick_test/96_matrix_add_bad.s | 211 +++++++++ quick_test/96_matrix_add_good.ll | 95 ++++ quick_test/96_matrix_add_good.s | 173 ++++++++ quick_test/asm/3.s | 79 ++++ quick_test/asm/6.s | 60 +++ quick_test/asm/7.s | 68 +++ quick_test/asm/96_matrix_add.s | 211 +++++++++ quick_test/asm/97_matrix_sub.s | 381 ++++++++++++++++ quick_test/asm/98_matrix_mul.s | 366 ++++++++++++++++ quick_test/asm/99_matrix_tran.s | 301 +++++++++++++ quick_test/asm2bin.toml | 72 +++ quick_test/bin/3 | Bin 0 -> 8584 bytes quick_test/bin/6 | Bin 0 -> 8648 bytes quick_test/bin/7 | Bin 0 -> 8648 bytes quick_test/bin/96_matrix_add | Bin 0 -> 8664 bytes quick_test/bin/97_matrix_sub | Bin 0 -> 8712 bytes quick_test/bin/98_matrix_mul | Bin 0 -> 8712 bytes quick_test/bin/99_matrix_tran | Bin 0 -> 8712 bytes quick_test/compile.toml | 72 +++ quick_test/diff.toml | 63 +++ quick_test/diff/3.diff | 0 quick_test/diff/6.diff | 0 quick_test/diff/7.diff | 0 quick_test/diff/96_matrix_add.diff | 10 + quick_test/diff/97_matrix_sub.diff | 10 + quick_test/diff/98_matrix_mul.diff | 10 + quick_test/diff/99_matrix_tran.diff | 10 + quick_test/execute.toml | 79 ++++ quick_test/expect/asm/3.s | 79 ++++ quick_test/expect/asm/6.s | 76 ++++ quick_test/expect/asm/7.s | 95 ++++ quick_test/expect/asm/96_matrix_add.s | 303 +++++++++++++ quick_test/expect/asm/97_matrix_sub.s | 298 +++++++++++++ quick_test/expect/asm/98_matrix_mul.s | 457 ++++++++++++++++++++ quick_test/expect/asm/99_matrix_tran.s | 286 ++++++++++++ quick_test/expect/asm2bin.toml | 72 +++ quick_test/expect/bin/3 | Bin 0 -> 8464 bytes quick_test/expect/bin/6 | Bin 0 -> 8616 bytes quick_test/expect/bin/7 | Bin 0 -> 8616 bytes quick_test/expect/bin/96_matrix_add | Bin 0 -> 8616 bytes quick_test/expect/bin/97_matrix_sub | Bin 0 -> 8616 bytes quick_test/expect/bin/98_matrix_mul | Bin 0 -> 8616 bytes quick_test/expect/bin/99_matrix_tran | Bin 0 -> 8616 bytes quick_test/expect/compile.toml | 72 +++ quick_test/expect/execute.toml | 79 ++++ quick_test/expect/log/3.log | 63 +++ quick_test/expect/log/6.log | 61 +++ quick_test/expect/log/7.log | 69 +++ quick_test/expect/log/96_matrix_add.log | 36 ++ quick_test/expect/log/97_matrix_sub.log | 36 ++ quick_test/expect/log/98_matrix_mul.log | 36 ++ quick_test/expect/log/99_matrix_tran.log | 36 ++ quick_test/expect/output/3.out | 3 + quick_test/expect/output/6.out | 3 + quick_test/expect/output/7.out | 4 + quick_test/expect/output/96_matrix_add.out | 5 + quick_test/expect/output/97_matrix_sub.out | 5 + quick_test/expect/output/98_matrix_mul.out | 5 + quick_test/expect/output/99_matrix_tran.out | 5 + quick_test/ll/3.ll | 50 +++ quick_test/ll/6.ll | 32 ++ quick_test/ll/7.ll | 38 ++ quick_test/ll/96_matrix_add.ll | 111 +++++ quick_test/ll/97_matrix_sub.ll | 194 +++++++++ quick_test/ll/98_matrix_mul.ll | 245 +++++++++++ quick_test/ll/99_matrix_tran.ll | 182 ++++++++ quick_test/log/3.log | 109 +++++ quick_test/log/6.log | 101 +++++ quick_test/log/7.log | 101 +++++ quick_test/log/96_matrix_add.log | 110 +++++ quick_test/log/97_matrix_sub.log | 140 ++++++ quick_test/log/98_matrix_mul.log | 132 ++++++ quick_test/log/99_matrix_tran.log | 132 ++++++ quick_test/output/3.out | 3 + quick_test/output/6.out | 3 + quick_test/output/7.out | 4 + quick_test/output/96_matrix_add.out | 2 + quick_test/output/97_matrix_sub.out | 2 + quick_test/output/98_matrix_mul.out | 2 + quick_test/output/99_matrix_tran.out | 2 + quick_test/sy/3.sy | 17 + quick_test/sy/6.sy | 13 + quick_test/sy/7.sy | 16 + quick_test/sy/96_matrix_add.sy | 69 +++ quick_test/sy/97_matrix_sub.sy | 73 ++++ quick_test/sy/98_matrix_mul.sy | 75 ++++ quick_test/sy/99_matrix_tran.sy | 75 ++++ 88 files changed, 6599 insertions(+) create mode 100644 quick_test/96_matrix_add_bad.ll create mode 100644 quick_test/96_matrix_add_bad.s create mode 100644 quick_test/96_matrix_add_good.ll create mode 100644 quick_test/96_matrix_add_good.s create mode 100644 quick_test/asm/3.s create mode 100644 quick_test/asm/6.s create mode 100644 quick_test/asm/7.s create mode 100644 quick_test/asm/96_matrix_add.s create mode 100644 quick_test/asm/97_matrix_sub.s create mode 100644 quick_test/asm/98_matrix_mul.s create mode 100644 quick_test/asm/99_matrix_tran.s create mode 100644 quick_test/asm2bin.toml create mode 100755 quick_test/bin/3 create mode 100755 quick_test/bin/6 create mode 100755 quick_test/bin/7 create mode 100755 quick_test/bin/96_matrix_add create mode 100755 quick_test/bin/97_matrix_sub create mode 100755 quick_test/bin/98_matrix_mul create mode 100755 quick_test/bin/99_matrix_tran create mode 100644 quick_test/compile.toml create mode 100644 quick_test/diff.toml create mode 100644 quick_test/diff/3.diff create mode 100644 quick_test/diff/6.diff create mode 100644 quick_test/diff/7.diff create mode 100644 quick_test/diff/96_matrix_add.diff create mode 100644 quick_test/diff/97_matrix_sub.diff create mode 100644 quick_test/diff/98_matrix_mul.diff create mode 100644 quick_test/diff/99_matrix_tran.diff create mode 100644 quick_test/execute.toml create mode 100644 quick_test/expect/asm/3.s create mode 100644 quick_test/expect/asm/6.s create mode 100644 quick_test/expect/asm/7.s create mode 100644 quick_test/expect/asm/96_matrix_add.s create mode 100644 quick_test/expect/asm/97_matrix_sub.s create mode 100644 quick_test/expect/asm/98_matrix_mul.s create mode 100644 quick_test/expect/asm/99_matrix_tran.s create mode 100644 quick_test/expect/asm2bin.toml create mode 100755 quick_test/expect/bin/3 create mode 100755 quick_test/expect/bin/6 create mode 100755 quick_test/expect/bin/7 create mode 100755 quick_test/expect/bin/96_matrix_add create mode 100755 quick_test/expect/bin/97_matrix_sub create mode 100755 quick_test/expect/bin/98_matrix_mul create mode 100755 quick_test/expect/bin/99_matrix_tran create mode 100644 quick_test/expect/compile.toml create mode 100644 quick_test/expect/execute.toml create mode 100644 quick_test/expect/log/3.log create mode 100644 quick_test/expect/log/6.log create mode 100644 quick_test/expect/log/7.log create mode 100644 quick_test/expect/log/96_matrix_add.log create mode 100644 quick_test/expect/log/97_matrix_sub.log create mode 100644 quick_test/expect/log/98_matrix_mul.log create mode 100644 quick_test/expect/log/99_matrix_tran.log create mode 100644 quick_test/expect/output/3.out create mode 100644 quick_test/expect/output/6.out create mode 100644 quick_test/expect/output/7.out create mode 100644 quick_test/expect/output/96_matrix_add.out create mode 100644 quick_test/expect/output/97_matrix_sub.out create mode 100644 quick_test/expect/output/98_matrix_mul.out create mode 100644 quick_test/expect/output/99_matrix_tran.out create mode 100644 quick_test/ll/3.ll create mode 100644 quick_test/ll/6.ll create mode 100644 quick_test/ll/7.ll create mode 100644 quick_test/ll/96_matrix_add.ll create mode 100644 quick_test/ll/97_matrix_sub.ll create mode 100644 quick_test/ll/98_matrix_mul.ll create mode 100644 quick_test/ll/99_matrix_tran.ll create mode 100644 quick_test/log/3.log create mode 100644 quick_test/log/6.log create mode 100644 quick_test/log/7.log create mode 100644 quick_test/log/96_matrix_add.log create mode 100644 quick_test/log/97_matrix_sub.log create mode 100644 quick_test/log/98_matrix_mul.log create mode 100644 quick_test/log/99_matrix_tran.log create mode 100644 quick_test/output/3.out create mode 100644 quick_test/output/6.out create mode 100644 quick_test/output/7.out create mode 100644 quick_test/output/96_matrix_add.out create mode 100644 quick_test/output/97_matrix_sub.out create mode 100644 quick_test/output/98_matrix_mul.out create mode 100644 quick_test/output/99_matrix_tran.out create mode 100644 quick_test/sy/3.sy create mode 100644 quick_test/sy/6.sy create mode 100644 quick_test/sy/7.sy create mode 100644 quick_test/sy/96_matrix_add.sy create mode 100644 quick_test/sy/97_matrix_sub.sy create mode 100644 quick_test/sy/98_matrix_mul.sy create mode 100644 quick_test/sy/99_matrix_tran.sy 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 0000000000000000000000000000000000000000..09533df25b844eed76ee6c9e24468dc394c328f0 GIT binary patch literal 8584 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 Ch;rNj literal 0 HcmV?d00001 diff --git a/quick_test/bin/6 b/quick_test/bin/6 new file mode 100755 index 0000000000000000000000000000000000000000..8086ae77ecab5e400e88489a1150b4d4754aba68 GIT binary patch literal 8648 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 TXi?1m@8W{(^K6S|#cKZ_Q3A}n literal 0 HcmV?d00001 diff --git a/quick_test/bin/97_matrix_sub b/quick_test/bin/97_matrix_sub new file mode 100755 index 0000000000000000000000000000000000000000..c300e12b3bcc2b70efd13082a2a5cfeb3a7edb9f GIT binary patch literal 8712 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 Sv+2(l7j9QmJ!%!b{@(#}%iT%< literal 0 HcmV?d00001 diff --git a/quick_test/bin/99_matrix_tran b/quick_test/bin/99_matrix_tran new file mode 100755 index 0000000000000000000000000000000000000000..c52fa4f79abf04eea8d3d42bbd103dcd3aec08b6 GIT binary patch literal 8712 zcmeHNeQZeeJq2t%bB^#W_7m8hNQlu6S>D(#PIEwmuot<(A;t*xeQVFlWC9|RTJ(NeN=-n+-K zUqV-H+N4RnC_eZ8&N=sY2D)&Q)Eg?m;dwYaLR3aGW+yQ87d9l_`>HQ250sM{6X5!fN7`c!HDH|RCvhx~CK{?S^H>4o@5h4zK~hV3UgD!hKwra$77uBX6r zD{KG@VWda;9qmt*{p69q9NFVP^Vb`{Gk^HIzxz`0sx9|?fUIj4>d!d`_vUNhcOYJh ze?JrFmQ@=Be$0e#6Zk78Jct7q!-Z*BK^DxE^;o6;Cr$F-5crr02WeC5W+|koN_#k| zDQfFxUnCw=S_8p|V({kVBs#TlOamlx2WTB?NRm}0peaUuM?4$@Ng}t9l3GC3q-X#U zY$tn@y|~#_B`r~vY5(h>v1yanC!x2j{%^V8x-7Tux?^X%y0$IhR@>Zn?g)3+bcMQV z1KsU)9f|I6^_t+PICQ%#SJk*(ZdWxrb8r>A@+{9MkH>XrkHmw4h?Kxp!4+PPJ7LNB zM}ADm08&1;PaimlZfb>x5ToLB8vD$?YM=lsvT*i!;#FtidB@3KtyZ?H7Z-+O*ax@`U4FUAht3XtwUzHp!q>9D2W zj(>8|hmghz^q;a1S^5Wt2l|MU#`+KUr{7rP`Q*T}BSS-vp3If0FDai)o$4PdICJ2g z^HUFgJk(h6(1pP#?ze{OEdzbueh%k@^S9eld-r=Q*7jemaJInw!Tnx){)rFMwuZ|F zw_*?BHM=VAUUb!7koVz!uYtckNce3R`n~paIi&MWTufUB|1mKX1c6xdE>7&BR^8u7 zVq!oBi!W`j0C!4*rGM`CrN3VR6SfiPZ&-HLKC&Dp@{WM(bcz4qmGe`F-}|b(a?d`+ zQC0xsvSZ0@a96=op7+|y{O43hVI52~9L- z`gGbhc*$gN=UTbk28Ck-xSq!gD$8w%=~5R9oi?a^!ispqWy19K zkEl&OoVaM{pSW0wa->UrP#ydH2xU;;m!*$ldD%MRbNf222U9re6Eete$T;e

*jN!9COph0c6f zdiwQJIQICJ#Y1TSOY`M($i3rTb$_!SFCbsj?K^d@b7g9@ z)CQyIUC#`*ct*UAq1E7ip_S(9yU+R<&ei>-igQ(Q)WxavB3h{t9MuMR+>b3jyX^E* zeXh4Wf39<%JRWr5Tp!ctI{iG2eE5Y__29GvPwqagyx+DuZ<@|06$?JkEDqaUbhn|W z*@`RE(_bbA7Jly8b~l6N0gJ_Py;a9DzFs4(|kN6_cx^A-4iUV%lzrymgX zTY|EuN5tf~-EC^qoq-D7H>n&l2sj1h_~%y9=J@3cqCF|%9T7I__h4cz75sMv|0dC9 zeZEr^*$m4rU7e1Th)1;fZm~Vj;M1L(N}u41@CP)54I-=qI`34<43hcfyG^mUr_h~= zN{>M@@ehHnebH)KoM@O{GZb}nuM_RCy6FXNxNcz(t&bMXRT|INhS025~ z9Cx9B4YM=6U%B$vW%4??_yRZ~@&&p0^_Wj!&z#}d@LoPSCw>F)b74lB>?sC*9^~RB zz|VnPycEp-M0~uR0f=*&E58W%{O00iux(EH#jt%&Jaf9UyTNh!^v=MvDtQzqn+lzO zx{t8`I0c_#XTYZs=hXxZtpexgHRInDc&X`b(t-F~<0cWeV*gH)JdbO}JB9o@ll)$R z^ZNpudU+gwEikig>=olWK6@WuMV##6_mAEQ{`_8-pY0D<5T9#aY=580PI}zWCBFc1 z3;Ji#b!;JzJh%K(U4Hg?S*_!<{qP>W+u7%0n=ZcyHk$mZ4RM;onCYCR5O>a)mZ`m` z%C2WdXa=dVX{)!sN!q$$LyNyPqhZb|da`ncpO(oK`N}Ohxk^d$wzRO7 zN+_TOpb2ehX{c|lm%RSQO*&oClPoU^1EM3Nx?579*>wPiM~LE4Y%qQ7sTes;LI;;F_LdOn@sE*A!R1cT*L) zq6@R|u8u&m16-lr7%Cf7Qw>g+qS8Gtry(IvRU!dbBBFsyQ+n`Mjq7XVQaXe`bc9ff zTi{Bl%8YM-E4x19Ui#31XjsMyt+=Z_j$J2>I<5z}@B$h|AH?zKi-IelX=*swiB6Vt z-u}%7#X0y$!FQff_+H81w={t>A=&JLX+WS@g7x|Sa7F;mY+vKHTC-mPGf)uaO z+*zM*RzAc?l=b<3yj>W`@f?ci#k_v^B8q`a#(us>zbqzf+#_b}=W&>BM}3OTxXt(N zNulr5M>W3jWZN%b%vBp}>1BYQ?;=3$5jb^6c`Eb#DITYOGx4m@?-M`*dD(^YT1u2I5A+P{>*~Ps6zeZ-Z zKF3qVLf@0EjCGzj)7MP;d@tN4^jVI(F}L3meX{+0&)R+secnIr?+;@9Y6b*leKXGb zOy5Cy96MoB&-_1w788T@7^XJ+E@MO|h5g6G#!>!@Y~lIy^N;dGJa?>S%9sdABc{&H V1+{!tHXVN26la|0jioW@-Qc literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e82524fa31cec6b192e1142d44ad7404069cd8a9 GIT binary patch literal 8464 zcmeHMZEO_h5uUsA2cckWjua;}(gpHCrTY8@#tBMvclKesF~+eS(W;f!d$;SmgZo(a z);6Z7!6pV2H5JH8NvnjQs)|s4MNw2mZABENDV3T(Reuy!twdW|_)!T*p;T%UyED5p zcYAvWiqz(x-_z~9^UTcqIlKGL?DO&AeSV)0r1;?zAa1n5!6GaeebA}YBZ)vStjFs% zcn}(pud^{n9g}r8HG3?lX?qg6BW7aOJk)a}aVUSxJUr8rJZv1wwWYF|M6%7y z6q7SOyV|Dnhx3Kmd|Nh?pFY}_%1^g-g}a|<+uhZUYVBE#1)`ocdUk2yVjV|0cWUT*x13=?Lec+XC_#l98=@oe1;bYI6jl2-`T>{bbXtD-V2k{ps+? zQ+HlFcvhC4RH_QKAF4tD9=Z!2L3}g*BYdA?)h^FsL(TBd zgM%_Ov0u@2Q%_}zmTpe$@5>hQ`h=Ru>W-|Y#F(~J(^TgmrE^75Xcv_tvX+ulGkHM1 zI9Hs*y`id=HffuvnxyUOfq~(nSf7HMyX%YcmM2|aIJ4()%Iuvoy3MKXCk|z1J7=_+ zE_F85lQw2E9lI0v@V`_t+1A+|?hbdL?0d0fy(Xm5P{ z^CNW%AxE$(_t`t=et>T0hwrewIpk=Pf4QG$tuEZ{ry&IujQ;#|)9a}~69m!N;lF>Ol5Z;Uw;a6FEwBE2abU;y zK3@3oq+g5r7Ea{e^R+bmWBW~L-tk!7N^sHl!mZ`^Za;eQ7SzCd%693f| zIpbSwA^enwr!xo@I)73*TPLnUq% zy@9^ICqp|in)+(UIRZm;3}yBi7<@GQy5@QlC)J8Cuo6dF`bbPvJ3E-(q@&#_i0G_}kUarIgCBLe~>q`DriPx9>suFJi z@xMyE5o+xl_6oA!mHPLA_)R5_UM%bH5(LnjB`@QGG2Yw&gBl(tM7|08?W}ay@&%;`~QfoAB3GDTY;49q9IFj@a9M6 z8TaN#UPL_Pm{wf>Xyes>{s!VLxG!n$*AD;D@)F|Bh@bV0=N%j0Qrbu9gnpea#uO`H6&FdPrzu9$vZRd#v zZT;%J)uY^w__M4-5-Ze>_}e54I#IvHU%d`bAs%9#3X(Lf&Ts+KGioBESZWF$Ir_i8 zwz36PQ&I-DIcuthlk~!F5|~QMV^`&*nquXYB&F4gsH+tuL!@DPw5X`lM-7IDb`3gos znW<;hu#vSOZ0SewY8LFJ3F~Rz`m}~x!a>+D^|Bj4*j+DslHIkM%OtV80ybK7+Qc=0 zFnVMT9SwV;w0u~#EHjgsw$OwBKZW82d_>?o$tiNalkY_GJ&47&uGEQQI@8YMi@m(x z<$Fqqlw3ugZvySc3dI;=FLB5^4iw~2Dsc#%BdAC_omjtvXLzxfxTTlvciGzI+^yI% z412LcF^kwsTw}2PC03-kht^5#CBEoGj8w&5&Z(_DK#7Y`#V*u_yF7yo1_Y(?%X#)V zPgpXKGJoku=r_=wVjSV++LyrzRQWdfbv~u@}FTHe~;V z{uu?>w;^(&^1Xdr0H$ImF!AEMf)TyQ2~{Gxn`%pI%c!ikrIp2ofX Ux1dEW`-7aA`lQ^VUGv)i7x(x)4gdfE literal 0 HcmV?d00001 diff --git a/quick_test/expect/bin/6 b/quick_test/expect/bin/6 new file mode 100755 index 0000000000000000000000000000000000000000..3b1968515651bae02431eb13da2aaec2d9184aaa GIT binary patch literal 8616 zcmeHNYit}>6~4P`$8JbmJ5ESLTG%EL1gRds631>vGDz$QO!2y~o;ztyPKUD;%;zyvQQRok(f<2=<)k}f{S0gE3kELoy0=KxbQJqsRj}fonk#) z9~RriI%ropnB<2XZIqGvEq;kJt(8p?0E&7h@lC&!XKIriQ^^&mXQJM*dJ^!EVNaX& zkmB5n#m#}a(8QPu>K~BAC+Gm`~nv3w5naGoEu@U{=pcz4^E z-86ruayCLVXH!$nc{^tr&6?FVc`T#r`(l}+R&3Hb+;KE^ID5=GGSLw~Vjj*kCDN%_ zyva)C;}acwn#Qw7vbo7@Q#zF$pK3~E$D7)e_Q#v{wl#xTb6O_`i>J+wJ-U+5DXq?a z;=FMVy@O9XOU3m+=+xu|?GeuaZ3L%|Z7gixSVw)@UTiuAZ`svqeV0x^{vhJ_9>0kW8x#dTNSekvUac&0a!t7il{NlBL7fZ0f*=vpSvvYF`b2G?Ug8JF#mwvN1 z^#19~-e{;(7j}N~uXo-^Gy;0!Q?K87uI5L}FLixqd8^nC2uPn~ z{D;eDuB@#7;Wl9NHR4gw{=~{`@00U?9F6GJ+T4r}&d|3#u>T?0D|`-ZSX*0b0s3vA z-9Y)g1ILDh?<+pv_KkiAL-}9bSzFryRKT+zE#@)!4T4?_u}EF8d)9xdDzc$g_(xug z{A`0i7^y?f{c?W??(e|;9k{;(|3^FUI{9mlQ5;Z5l)b(rt(Dt(PaAy;Ea-P)S&~Eq ziE{h{uU@Bc{IZSOHz?lO?%`7yDQ*#;9bwjIAEP!PXZE){YdP#9L~V}YI;$j~eVZxb zucz@$$rc}>HohORY>}jJWnX7E`8oK`#WLz#h1g7#eWk6`zFsW{V4T~$4%UBw^geRj5=An`Gl78Uk?gm8X7J59KJiSVC#&MOIc6~^nHg3oI|^#7(up2zj# z<0SvKNB$Jy{C?nJUWSTK6!(o!;i7|=pW`p6AAa9(KfiP2%kAOcfLB@<&tLJ_8>T2L z$*%|82lgpyd4@c4W%-93`SSav&B4p@F+2>ipy?K=9 z01pHiYo^>ALMXFiu5d`p@AUnSgozx>+4%g4QW7yLHh4gT`` z?hfLj_?+SQI)tkg^HN&@Z*bl37{6lK26&})y$$_ua@}7$q`3IFBVV51YN39-&w)7T zVLxndG3w_tAm89Gf6nv)9weC(61VJDB?p-sEtXPkEg^PI{kN~PbWYRNgb964TAC^I zVK7V#Qf^ros+fFJ?Ti}7^jjWe^&BUUbV#%2Rc(Aq#B&)lZPZImW zBWqjJV$9MqhN_QeGSi^qYN;S;mxy*K`Dp|Y_Xc(25yJL{;bk>O#UrJ-xK1~VD%4v&P@NVKbs9LRXMI<(XhwwPNa2z%FNOEe6!KBu#S7 zNfMeu$>wZB2}k;y&;S+4kt<0ppA?Edodsn{ZA)?{3@e|?WlI_=@GK*(DQ4Ohifv56 z)yg@0qZmoDf}{>o+!Bgu8AXc_io0GkDraadlZrzHcUnp0pzFM>!%heVOf&vKF5BK=NBy7-NY^$8aHp@Ojx>$9Ia zMfyJ>L5!zxpIDzgp)SBsl=a!4?W75Eyaggo!9LvODQG|dQJ6pby%%V~oY&;_^EgbO z0ey^}xXu3YtE3R5!MyV)7;@2aFCzr7AAOzlM+wI!#(duOrvbw?alFa?c8Gvc;JFL0 zhv`vZy7k#FKS%njZe^(RxidUT`qDpw?>gikEm8pLmFG6oEb{{V;wW7?`bQeU2|~(DzlAV|{Kj zy#x&W-pBf!f4KDl^)G`i9u@0zyu#mi`8zHhXTg5>{I7v7u8H*vaSaLV0-n3@yczpB zRNVR;|Li7xzW-UC^_l+CqtAZdDCx7DSD)Lzg$l~>{MnC6-bJ6!kM(~K6~tN?AjZN4m;s`!$1t|p_8CL^Ce43}4i58EI7i+Oe*R$|hu03(Lg}Lr aGUn;rJAMObRMNjl3A29`dXyEf{(k_qYhu6v literal 0 HcmV?d00001 diff --git a/quick_test/expect/bin/7 b/quick_test/expect/bin/7 new file mode 100755 index 0000000000000000000000000000000000000000..6c2c66736fd80c520593de647a683f3771c6c85f GIT binary patch literal 8616 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 A-2eap literal 0 HcmV?d00001 diff --git a/quick_test/expect/bin/97_matrix_sub b/quick_test/expect/bin/97_matrix_sub new file mode 100755 index 0000000000000000000000000000000000000000..0f33107f086c0d67ca47b7a7749ede80448d6a7d GIT binary patch literal 8616 zcmeHNeQXrh5uf|8&wLp>$5%ok9UKirtX@ajgEqSJfkYj3bf%G)ed$>*r*hrtP z&3Z)1_ChJ<0Cdc^I7~tGPf|3;w-;Ibx9_v`nC{BkZ}C}=VA7iwdecIWX`Rqx%IiXN zqrXdne@UzhQy=oE_{^szOVvmJX(*(3Y@Wq9HqWw?=^6_LrX)+{>!?R|e%8Xv-Ydqt z)4Hq^_A|At0ccDo_BCdWjIK7ydh^Ksl%i~kruOR55qlO znTW<3^h7o`ys@QWD7`108A&%J6X~IS4e|6)LvvvL=7tT;jVRWbR0M;?liJ1>C6LVo zn#}biyUB(~&tv9PY5t4Nn)M)m^xz-iWIFo_tqt+meyo~>FviXGbHXYJgM%>YgRn&W zg{3RLJAeF{zkRu`vFEGT5V~Wb{(Tj=_uT>Cg!o;=6X%pwyRoA>_+Sp!m0G-2$Omom z9Rjbj;UIPO?~oK#SL2DSq3ZoR+LM{I+Al|ws>Q3w(T0pf+5jZ6L69WcKq+g;x*?_H zL>jQ29nFs7woug=)Mk=@PD)w^7f03C z;F>$~|Ez;T?IhxSzFvOrhv-617)FdrozL1&@=Md-OcY>65l+6x#aD#0FB5Ol53t_# z+mP#&>*roq`>lyFquTM;_0+={>=I*fr09|TVe8N)&UXKT2H8U`Q zhwk86Z&ekHjgKAZQi+EWRUY{1k%_l9wB35{)DI3F`qAs9a-sUw7oR>G%2i)_?()^? zxf_Qf{;>~oM|U}ukYnsX>ec)99)15noqx-*S%2%xv;LOXX8pnQv;HlYZunb2y5Vne z-}DEU-1Oh?zWtr4r`NuA`+FYOrrfPpCOt2BfZOibS0=}c+PNFAOr9H=saZQUQ;@Og zj(gyl$b0Wx{^($2>!AVVOY+!(roGj- zR$o8hSQPP}e0L0=zcimy@8)Q3q2r`?ZpQN`YffjDADvu#Y{u-(hMt_6tteXwJvnou zqHHDfhC|@Hn!_)zoXs#xAw5{0PZinC!F9|>3YbAXOYhL zPiE)lT9G#2nw#rJde7~-ISnblH(dLB!SSTSv2u~q#8x2hanxCj6g&>_A^8gaT|n## zQV7@X3Lkcc7uJCD!W#>nyTY}w4&g`f??IcO2^3Ci)$D$(Znd+$d>7ILUxab+gvEvhW-oY8 z5_GAcO!9XoabFT)3v3qxO9Z9ZfXZ@%jUV9LtZ7uWNHYhlT!}XbW>; zTC|4+UkvxT5ggwvJixRVw~UJYV!23r`-8r97)?Fkv+ltV>P4P;5e5g%-d$IvW89W# z)|#YLvlf(Ostq)2&5}Zo7-9Ppv8--Y2Gn#+MQH?6si9<(7UZ$+L|ypn$oYa|85jO$ za=cuMyYhZjio5gvRf<;u`&B7k4eWoVxCbij8;%OR-=*^N@_tl`&j()rQhY%^FH?#y zgeej4m*R^sAHbef;JEOf|3*c8G4Q!ANYlNe4){Em;`RA+T#DZXoaZRTF`^LXtQ21Y z!HW1&Xsw7ZgN}+gpU&dm$$mcl1)NsJO>wfV(D|i17yFM-@F~^?e4B7yOu*1DaDLx1 z{~?uRGu$Qvc2h=M;Z1>!I-e;c*w6_)^$n zv!@>MO7nUj`@gH`e61EMy3CX>&u39yv94&{cmrZsp?*$btV89ZMW6-c>z(EEZ9|;) zH)!+EZHW7*16$c;$}a%+=PS&Q=|)o^gSj3#nve`R4r})Pw?BW$jI2m;4f`C?WzEW< z;V@B5$)$0qLUK+rQc{f4b6J#CGMsKwFwL5kjS|t#o6t5xPwbPjL(xEX6wpXDt(dE^tv9rzQ|j#L zkR*^E?cLel+3{F!r_|lm^GGPtDfNfK-JQtk_*PG7M^`(JgjWiwbGu~eZSUv>Dbl?& z9O{;KZrj$^*`L?2=N8+Fa)+OmyA&D99vmv%*TYn=<4mQbV`sAlJ;qq6UF<#!v&Ha90DlU;wk^fk8Pt2mxg@jmj1^bc-{r>e)ml zUDA+{r>jXhpd}3m80tQJ>KSu&0_vdfgFywQxCH@CR|`G?f#Q0>t<0h2R3e7MWw6t% z)n^u$0|Mp)oiv5MhvQMkKOh_EQqds;o%(-JC=Q`l0Ulqo@V$}0Kk;`a!8T>NP88Fo z=Jx^C=lcPFr}2?cQQ`L>LmRL{u?y>Sd{ZL=5Wehkd_(sTD%?*K)~{h~!1^2ywF>%C!vhJ*dJG@2>2v(>h8X`z78I2Ihv7-A&|2^`InLnkhjw}P zAI5)yy5u9Q&+*7b@qLx$P{b_UX8IDM^u3SuIsb6wGwPp0UD_(v=lF)d@A7wC_75JH z_x~*F(wta79|sA6Ao7X}>offWGK=;3J{J`FEXRG=+vku$7?00!Rjbfn$clp6_x~N6 zKF43IZiLWAFJ`0p8x;= literal 0 HcmV?d00001 diff --git a/quick_test/expect/bin/98_matrix_mul b/quick_test/expect/bin/98_matrix_mul new file mode 100755 index 0000000000000000000000000000000000000000..b7084cb5aafe42b55806b65671bfbfc40f75b276 GIT binary patch literal 8616 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 Xj9dG!Lk&Cq3nF3mVbP*dvFiT^D`kpt literal 0 HcmV?d00001 diff --git a/quick_test/expect/bin/99_matrix_tran b/quick_test/expect/bin/99_matrix_tran new file mode 100755 index 0000000000000000000000000000000000000000..9654060534a79b263210c692f04e97aca3861649 GIT binary patch literal 8616 zcmeHNYitzP6+Zj0*AQ?F3xyP-Zdei%wO+5y%j7}4Yn!zbV^Z6xTD9shyE9%d>|;DT zwlRtt+blAv6jWrjsFm7~2sJK3k(x&RRV75tOI0eRA#JFtwxAM`R;_SUf)nFM&zZSr zy*s<0NKt-N%0-@Y?{^;eb?)pvXLzEmbC1*E04`4WFHozw(!!brW9rLRrGj|S1k3Tc z5jH?2w%sOX@taL;lCkuIP77yRWi`Qtl=L*g*PNC-Q$xrxwYWff8tFY;BLr-u$JS;& zqBQoUQpf?=yxih21!140XpR?FTKo%lT6#?P=f`jHS&v}Sn-+T0LXT;U&|}K$LUW_P z%YuJdtP4{g@~HUCrzK0(N8dLT(#tKg7`bKEIGJv?U|>qJRKAXSG|o?3c-gx}e>Yo~ zEn@sktt(%h_;5;5c1BYJdURMnuwx*4AbnUrIJ6^nP&<&SizgG& zSe>58#)fums~b!oOlOAEb;(3}@K9YmJy_Qm*t)B3dt*I{)h89fVDY53W1AAlW&#c7 zdeXRQ43VzK%&F4+Z#Qe!gZ$Bhe}vP}*;i<7h{xl{s#yqQ++05=+y!B95Jol#OT?dB zyZ(F2C!YMvS8M9K9=wjwO$*ugmEqob6MQG)tBEJhDXVs(p&Iyb5w;YMc(;%b+T>dW zUSq>S>ge4oDXOl<6Inymd-t{^GikL~jwV%$SC*p<8i}+4NMijUNwk4d){u2WO38^d zU^_dK9l>p(s?o304pB8mJGBEMogLv83HNo|=jAB(6*%C~&VzBisZZOg_if#EATiu9 zqzpC6!|@&c+HfMcJ$eh*i^pPh4O;_S13`4VXgxb!iI0+R;yT2WnW&tUv6#QA)^c;ZLsLQWV$j7p8q+E4OJ)89-KV0{5jzQ@H^fU_?X@1!4KtLwKR z*GsNvysnn{$#JATUO4i?IK-hE)&cu!)5Y!TeETXiJI_q4!!EoP zuQ|rmAb1BHi(`8nk>$s(PD?kOKX~xW$-4k1$6mQ(d=#KV?TAl$D!}XUK&)y8Ch^dX zz2U8>fbog((GHb(C{f{opFTDD-uCAC6EFSn=+Pg)RxB4Rn0t1=Qwcf7M^i7~Iq>YiM{E2KoSySHy*TIJ_UfEJ`0kwlfy=Z0rfakQZSEWX z;F=r$d)y00cDiSu@wj&8<|b+*PM;itz=Qn*a>R1`^pSqO8=h;i+ z_w~2n=^UAtsPu8BEStx^^otZ0xo-T`?otZ5wTMj)t^D)UD zt@Yn?ZNc^2*b!=t)&AqvE7vEh+}FKT?isHu_p#TL`(&~*H|wp;-I%P%&3P+w^OGL; zN4qcnWa8@dL+_uNApPy9NZXnRuE)pcPkPSzH($f~EGYl8qeV?Z_)1lOMBS37x&kJXWX&D zb-xeK8lB(Y%q=c9A?==DTDb2UlL&pvLZiWt~M}s>14kac=WEu)YY#^8MrM+?>xb zp}#2FVz@9Z+Czdby8GM+_HP#MU|RHBLdAZuT%@JtKHnCMrtbAw_h1NhBhS1DgM()8 zuBp&5Zc8+34N|I63raH8`Wm%HNufuKu)~R1R<|mBYC5K(G=izrV6s6Aa$h&2E^uJ} zfLCrw%7wqF94{}S^!w_{`&BXS&ihv}UIFY^#dsyK{}tmND7SCeEAW07%P-6OQ8B(8 zc>Rm<+wystVtfURig>>mUy1pEa_dtKQ)ThnfzNfZof_ctT#T>EpW|YDHE^Dz7{`c0 zoU>wl4Ft>LYoVzu{v~KFi}UF$v`+iZr+*2jRdG|CY%6qr=}yM};}d*}wE^EIoEH-? z^a`Bcw~T*B;89y#-H&*=ezS->(Y|Jr=YH+@ppZXqlRqYKe&1u$EI-4i1D4i}z2c0C zm+s>q5U26*?}upwAAdFFOZ{OE@pALx@&Cy-&T1S$Ir(*nJ1`FQE$0z(&*kOsHswpt z%R?q!>WA&7+0t|IZByP0TWo$cfH=*;o*y}mxNm7_`Px5CywuOn2s`$C%`XvO1#6*M z^vl10ze2nQ_p9ADo|jF0P06`IZ$DobOuTfQS8jq|Bm2(MbLzk!%vG@T z{^9XcUX$j<=a=!-h?kq!f6)Hwg7dXWtmryZzBHe8uZb_&=M9Kqh3uTdScu9+i@BsFd5BhaVIDOFMiQ>hVDDQHP3X%va>+J$2?^u!^_(B*U>I|4XLHLaM- zv8OwOt(ZB{eF!Uwv^1Di71#^7jtYv{Q-6{a&1QuGS}qj9 z+^QIc$eU8?wQPD7aB)+H97SsA7VYPnnOf8!kj@xtAQbMXBPR@Co;=VmXZsA%17oO0spcJ9e4v}A(EG4I%J~Om1Dz^5XrNnv=0b4@y$bO7nuYI;{QZf) zGYPgS%XOldHZ{Kwus+`p_&be{gbE73?-<&S6^dP0pW~Y<5rFVzm*X3{hfrZV4OqX9 zu>tFIJk%ugx0%vQ-z`{Qz;HiSC>COUzSn9(e@X~aJVooo`h0V0L5xIMpYOlx#Q-_p zLJ_lw*Dg2V5v*aLksm+blZV8FIn~7T=YE)e6ZI)};x^x>j|l~z=*d2Q0b_34TFbBi zI9{6)`t1UzCjJ_f%%9?6niI#Hd_SKS`jk&AEH$FRbO76h`h1UU76zNeKClhmcWw_0 zed|62`TPE;2r%vP+-CZO(C78zxPZSGZsv{zWj%(UvgvdDFeUnboCO7C|6%wfR%k7F znjB~F_d~lp`w!zkM_uv}*5`QSqWHebawuXJZZmxWQTpD;`ka6G;8W_qgu1jG*Z&{Y CB7e64 literal 0 HcmV?d00001 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