sysy-data/functional_c/asm/76_n_queens.s

514 lines
7.0 KiB
ArmAsm

.file "76_n_queens.sy"
.option pic
.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0"
.attribute unaligned_access, 0
.attribute stack_align, 16
.text
.align 1
.globl printans
.type printans, @function
printans:
addi sp,sp,-32
sd s2,0(sp)
lla s2,.LANCHOR0
lw a5,0(s2)
lw a4,4(s2)
sd ra,24(sp)
sd s0,16(sp)
sd s1,8(sp)
addiw a5,a5,1
sw a5,0(s2)
ble a4,zero,.L1
lla s1,.LANCHOR0+12
li s0,1
j .L4
.L3:
call putch@plt
lw a5,4(s2)
addiw s0,s0,1
blt a5,s0,.L1
.L4:
lw a0,0(s1)
addi s1,s1,4
call putint@plt
lw a5,4(s2)
li a0,32
bne a5,s0,.L3
ld s0,16(sp)
ld ra,24(sp)
ld s1,8(sp)
ld s2,0(sp)
li a0,10
addi sp,sp,32
tail putch@plt
.L1:
ld ra,24(sp)
ld s0,16(sp)
ld s1,8(sp)
ld s2,0(sp)
addi sp,sp,32
jr ra
.size printans, .-printans
.align 1
.globl f
.type f, @function
f:
addi sp,sp,-80
sd s3,40(sp)
lla s3,.LANCHOR0
lw a5,4(s3)
sd ra,72(sp)
sd s0,64(sp)
sd s1,56(sp)
sd s2,48(sp)
sd s4,32(sp)
sd s5,24(sp)
sd s6,16(sp)
sd s7,8(sp)
ble a5,zero,.L8
mv s4,a0
lla s1,.LANCHOR0+212
li s0,1
li s5,1
.L14:
lw a4,0(s1)
beq a4,s5,.L10
addw s2,s4,s0
slli s2,s2,2
add a4,s3,s2
lw a4,408(a4)
bne a4,zero,.L10
addw a3,s4,a5
subw a4,a3,s0
slli a4,a4,2
add a4,s3,a4
lw a4,608(a4)
bne a4,zero,.L10
slli a4,s4,2
add a4,s3,a4
sw s0,8(a4)
beq s4,a5,.L20
.L11:
subw a3,a3,s0
li a5,1
slli a3,a3,2
add s2,s3,s2
add a3,s3,a3
sw a5,0(s1)
addiw a0,s4,1
sw a5,408(s2)
sw a5,608(a3)
call f
lw a5,4(s3)
sw zero,0(s1)
sw zero,408(s2)
addw a4,a5,s4
subw a4,a4,s0
slli a4,a4,2
add a4,s3,a4
sw zero,608(a4)
.L10:
addiw s0,s0,1
addi s1,s1,4
ble s0,a5,.L14
.L8:
ld ra,72(sp)
ld s0,64(sp)
ld s1,56(sp)
ld s2,48(sp)
ld s3,40(sp)
ld s4,32(sp)
ld s5,24(sp)
ld s6,16(sp)
ld s7,8(sp)
addi sp,sp,80
jr ra
.L20:
lw a5,0(s3)
lla s7,.LANCHOR0+12
li s6,1
addiw a5,a5,1
sw a5,0(s3)
j .L13
.L12:
call putch@plt
lw a5,4(s3)
addiw s6,s6,1
bgt s6,a5,.L21
.L13:
lw a0,0(s7)
addi s7,s7,4
call putint@plt
lw a5,4(s3)
li a0,32
bne a5,s6,.L12
li a0,10
call putch@plt
lw a5,4(s3)
addw a3,s4,a5
j .L11
.L21:
addw a3,s4,a5
j .L11
.size f, .-f
.section .text.startup,"ax",@progbits
.align 1
.globl main
.type main, @function
main:
addi sp,sp,-144
sd s4,96(sp)
sd ra,136(sp)
sd s0,128(sp)
sd s1,120(sp)
sd s2,112(sp)
sd s3,104(sp)
sd s5,88(sp)
sd s6,80(sp)
sd s7,72(sp)
sd s8,64(sp)
sd s9,56(sp)
sd s10,48(sp)
sd s11,40(sp)
call getint@plt
lla s4,.LANCHOR0
ble a0,zero,.L25
mv s7,a0
li s5,1
.L23:
call getint@plt
sw a0,4(s4)
mv s0,a0
ble a0,zero,.L32
lla s3,.LANCHOR0+416
lla s2,.LANCHOR0+212
li s1,1
.L46:
lw a5,0(s2)
mv s6,s1
addiw s1,s1,1
beq a5,s5,.L26
lw a5,0(s3)
bne a5,zero,.L26
addiw a5,s0,1
subw a5,a5,s6
slli a5,a5,2
add a5,s4,a5
lw a4,608(a5)
bne a4,zero,.L26
sw s6,12(s4)
beq s0,s5,.L58
sw s5,0(s2)
sw s5,0(s3)
sw s5,608(a5)
.L31:
lla s8,.LANCHOR0+420
lla s9,.LANCHOR0+212
li s10,1
.L45:
lw a5,0(s9)
beq a5,s5,.L33
lw a5,0(s8)
bne a5,zero,.L33
addiw a5,s0,2
subw a5,a5,s10
slli a5,a5,2
add a5,s4,a5
lw a1,608(a5)
bne a1,zero,.L33
sw s10,16(s4)
li a4,2
beq s0,a4,.L59
sw s5,0(s9)
sw s5,0(s8)
sw s5,608(a5)
.L38:
lla a6,.LANCHOR0+424
lla a1,.LANCHOR0+212
li s11,1
.L44:
lw a0,0(a1)
beq a0,s5,.L40
lw a0,0(a6)
bne a0,zero,.L40
addiw a7,s0,3
subw a0,a7,s11
slli a0,a0,2
add a0,s4,a0
lw a0,608(a0)
bne a0,zero,.L40
sw s11,20(s4)
li a5,3
beq s0,a5,.L60
.L41:
subw a7,a7,s11
slli a7,a7,2
add a7,s4,a7
li a0,4
sw s5,0(a1)
sw s5,0(a6)
sd a1,8(sp)
sd a6,0(sp)
sw s5,608(a7)
call f
lw s0,4(s4)
ld a1,8(sp)
ld a6,0(sp)
addiw a0,s0,3
subw a0,a0,s11
slli a0,a0,2
add a0,s4,a0
sw zero,0(a1)
sw zero,0(a6)
sw zero,608(a0)
.L40:
addiw s11,s11,1
addi a1,a1,4
addi a6,a6,4
ble s11,s0,.L44
addiw a5,s0,2
.L39:
subw a5,a5,s10
slli a5,a5,2
add a5,s4,a5
sw zero,0(s9)
sw zero,0(s8)
sw zero,608(a5)
.L33:
addiw s10,s10,1
addi s9,s9,4
addi s8,s8,4
ble s10,s0,.L45
addiw a5,s0,1
subw a5,a5,s6
slli a5,a5,2
add a5,s4,a5
sw zero,0(s2)
sw zero,0(s3)
sw zero,608(a5)
.L26:
addi s2,s2,4
addi s3,s3,4
bge s0,s1,.L46
.L32:
addiw s7,s7,-1
bne s7,zero,.L23
.L25:
ld ra,136(sp)
ld s0,128(sp)
lw a0,0(s4)
ld s1,120(sp)
ld s2,112(sp)
ld s3,104(sp)
ld s4,96(sp)
ld s5,88(sp)
ld s6,80(sp)
ld s7,72(sp)
ld s8,64(sp)
ld s9,56(sp)
ld s10,48(sp)
ld s11,40(sp)
addi sp,sp,144
jr ra
.L58:
lw a5,0(s4)
lla s11,.LANCHOR0+12
addiw a5,a5,1
sw a5,0(s4)
j .L30
.L28:
call putch@plt
lw a5,4(s4)
addiw s0,s0,1
bgt s0,a5,.L61
.L30:
lw a0,0(s11)
addi s11,s11,4
call putint@plt
lw a5,4(s4)
li a0,32
bne a5,s0,.L28
li a0,10
call putch@plt
lw s0,4(s4)
.L29:
addiw a5,s0,1
subw a5,a5,s6
slli a5,a5,2
add a5,s4,a5
sw s5,0(s2)
sw s5,0(s3)
sw s5,608(a5)
bgt s0,zero,.L31
sw zero,0(s2)
sw zero,0(s3)
sw zero,608(a5)
j .L32
.L59:
lw a1,0(s4)
lla a5,.LANCHOR0+12
sd a5,0(sp)
addiw a1,a1,1
li s11,1
sw a1,0(s4)
j .L37
.L35:
call putch@plt
lw s0,4(s4)
addiw s11,s11,1
bgt s11,s0,.L36
.L37:
ld a5,0(sp)
lw a0,0(a5)
addi a5,a5,4
sd a5,0(sp)
call putint@plt
lw a1,4(s4)
li a0,32
bne a1,s11,.L35
li a0,10
call putch@plt
lw s0,4(s4)
.L36:
addiw a5,s0,2
subw a1,a5,s10
slli a1,a1,2
li a0,1
add a1,s4,a1
sw a0,0(s9)
sw a0,0(s8)
sw a0,608(a1)
ble s0,zero,.L39
j .L38
.L61:
mv s0,a5
j .L29
.L60:
lw a0,0(s4)
lla a5,.LANCHOR0+12
sd a5,0(sp)
addiw a0,a0,1
li a7,1
sw a0,0(s4)
j .L43
.L42:
sd a1,24(sp)
sd a6,16(sp)
sd a7,8(sp)
call putch@plt
ld a7,8(sp)
lw s0,4(s4)
ld a6,16(sp)
addiw a7,a7,1
ld a1,24(sp)
bgt a7,s0,.L62
.L43:
ld a5,0(sp)
sd a1,24(sp)
sd a6,16(sp)
lw a0,0(a5)
addi a5,a5,4
sd a7,8(sp)
sd a5,0(sp)
call putint@plt
lw t1,4(s4)
ld a7,8(sp)
ld a6,16(sp)
ld a1,24(sp)
li a0,32
bne t1,a7,.L42
li a0,10
sd a1,8(sp)
sd a6,0(sp)
call putch@plt
lw s0,4(s4)
ld a6,0(sp)
ld a1,8(sp)
addiw a7,s0,3
j .L41
.L62:
addiw a7,s0,3
j .L41
.size main, .-main
.globl line2
.globl line1
.globl row
.globl n
.globl sum
.globl ans
.globl _sysy_idx
.globl _sysy_us
.globl _sysy_s
.globl _sysy_m
.globl _sysy_h
.globl _sysy_l2
.globl _sysy_l1
.globl _sysy_end
.globl _sysy_start
.bss
.align 3
.set .LANCHOR0,. + 0
.type sum, @object
.size sum, 4
sum:
.zero 4
.type n, @object
.size n, 4
n:
.zero 4
.type ans, @object
.size ans, 200
ans:
.zero 200
.type row, @object
.size row, 200
row:
.zero 200
.type line1, @object
.size line1, 200
line1:
.zero 200
.type line2, @object
.size line2, 400
line2:
.zero 400
.type _sysy_idx, @object
.size _sysy_idx, 4
_sysy_idx:
.zero 4
.zero 4
.type _sysy_us, @object
.size _sysy_us, 4096
_sysy_us:
.zero 4096
.type _sysy_s, @object
.size _sysy_s, 4096
_sysy_s:
.zero 4096
.type _sysy_m, @object
.size _sysy_m, 4096
_sysy_m:
.zero 4096
.type _sysy_h, @object
.size _sysy_h, 4096
_sysy_h:
.zero 4096
.type _sysy_l2, @object
.size _sysy_l2, 4096
_sysy_l2:
.zero 4096
.type _sysy_l1, @object
.size _sysy_l1, 4096
_sysy_l1:
.zero 4096
.type _sysy_end, @object
.size _sysy_end, 16
_sysy_end:
.zero 16
.type _sysy_start, @object
.size _sysy_start, 16
_sysy_start:
.zero 16
.ident "GCC: (Debian 12.2.0-13) 12.2.0"
.section .note.GNU-stack,"",@progbits