sysy-data/quick_test/96_matrix_add_good.s

174 lines
2.2 KiB
ArmAsm

.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