sysy-data/functional_c/asm/62_percolation.s

1002 lines
13 KiB
ArmAsm

.file "62_percolation.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 init
.type init, @function
init:
mulw a2,a0,a0
li a1,255
lla a0,.LANCHOR0+4
addi a2,a2,1
slli a2,a2,2
tail memset@plt
.size init, .-init
.align 1
.globl findfa
.type findfa, @function
findfa:
addi sp,sp,-48
sd s0,32(sp)
sd s1,24(sp)
lla s0,.LANCHOR0
slli s1,a0,2
add a5,s0,s1
lw a5,0(a5)
sd ra,40(sp)
sd s2,16(sp)
sd s3,8(sp)
sd s4,0(sp)
bne a5,a0,.L9
ld ra,40(sp)
ld s0,32(sp)
ld s1,24(sp)
ld s2,16(sp)
ld s3,8(sp)
ld s4,0(sp)
addi sp,sp,48
jr ra
.L9:
slli s2,a5,2
add a4,s0,s2
lw a0,0(a4)
beq a5,a0,.L5
slli s3,a0,2
add a5,s0,s3
lw a5,0(a5)
bne a0,a5,.L10
.L6:
add s2,s0,s2
sw a5,0(s2)
mv a0,a5
.L5:
add s0,s0,s1
ld ra,40(sp)
sw a0,0(s0)
ld s0,32(sp)
ld s1,24(sp)
ld s2,16(sp)
ld s3,8(sp)
ld s4,0(sp)
addi sp,sp,48
jr ra
.L10:
slli s4,a5,2
add s4,s0,s4
lw a0,0(s4)
beq a5,a0,.L7
call findfa
sw a0,0(s4)
.L7:
add s3,s0,s3
sw a0,0(s3)
mv a5,a0
j .L6
.size findfa, .-findfa
.align 1
.globl mmerge
.type mmerge, @function
mmerge:
addi sp,sp,-112
sd s0,96(sp)
sd s2,80(sp)
lla s0,.LANCHOR0
slli s2,a0,2
add a5,s0,s2
sd s1,88(sp)
lw s1,0(a5)
sd ra,104(sp)
sd s3,72(sp)
sd s4,64(sp)
sd s5,56(sp)
sd s6,48(sp)
sd s7,40(sp)
sd s8,32(sp)
sd s9,24(sp)
bne a0,s1,.L30
.L12:
slli s2,a1,2
add a5,s0,s2
lw a5,0(a5)
bne a1,a5,.L31
.L20:
beq a5,s1,.L11
slli s1,s1,2
add s0,s0,s1
sw a5,0(s0)
.L11:
ld ra,104(sp)
ld s0,96(sp)
ld s1,88(sp)
ld s2,80(sp)
ld s3,72(sp)
ld s4,64(sp)
ld s5,56(sp)
ld s6,48(sp)
ld s7,40(sp)
ld s8,32(sp)
ld s9,24(sp)
addi sp,sp,112
jr ra
.L31:
slli s3,a5,2
add a4,s0,s3
lw a4,0(a4)
beq a5,a4,.L21
slli s4,a4,2
add a5,s0,s4
lw a5,0(a5)
bne a4,a5,.L32
.L22:
add s3,s0,s3
sw a5,0(s3)
mv a4,a5
.L21:
add s2,s0,s2
sw a4,0(s2)
mv a5,a4
j .L20
.L30:
slli s3,s1,2
add a5,s0,s3
lw a5,0(a5)
beq s1,a5,.L13
slli s1,a5,2
add a4,s0,s1
lw a4,0(a4)
bne a5,a4,.L33
.L14:
add s3,s0,s3
sw a4,0(s3)
mv a5,a4
.L13:
add s2,s0,s2
sw a5,0(s2)
mv s1,a5
j .L12
.L33:
slli s4,a4,2
add a5,s0,s4
lw a5,0(a5)
beq a4,a5,.L15
slli s5,a5,2
add a4,s0,s5
lw a4,0(a4)
bne a5,a4,.L34
.L16:
add s4,s0,s4
sw a4,0(s4)
mv a5,a4
.L15:
add s1,s0,s1
sw a5,0(s1)
mv a4,a5
j .L14
.L32:
slli s5,a5,2
add a4,s0,s5
lw a4,0(a4)
beq a5,a4,.L23
slli s6,a4,2
add a5,s0,s6
lw a5,0(a5)
bne a4,a5,.L35
.L24:
add s5,s0,s5
sw a5,0(s5)
mv a4,a5
.L23:
add s4,s0,s4
sw a4,0(s4)
mv a5,a4
j .L22
.L35:
slli s7,a5,2
add a4,s0,s7
lw a4,0(a4)
beq a5,a4,.L25
slli s8,a4,2
add a5,s0,s8
lw a5,0(a5)
beq a4,a5,.L26
slli s9,a5,2
add s9,s0,s9
lw a0,0(s9)
beq a5,a0,.L27
call findfa
sw a0,0(s9)
.L27:
add s8,s0,s8
sw a0,0(s8)
mv a5,a0
.L26:
add s7,s0,s7
sw a5,0(s7)
mv a4,a5
.L25:
add s6,s0,s6
sw a4,0(s6)
mv a5,a4
j .L24
.L34:
slli s6,a4,2
add a5,s0,s6
lw a5,0(a5)
beq a4,a5,.L17
slli s7,a5,2
add a4,s0,s7
lw a4,0(a4)
beq a5,a4,.L18
slli s8,a4,2
add s8,s0,s8
lw a0,0(s8)
beq a4,a0,.L19
sd a1,8(sp)
call findfa
ld a1,8(sp)
sw a0,0(s8)
.L19:
add s7,s0,s7
sw a0,0(s7)
mv a4,a0
.L18:
add s6,s0,s6
sw a4,0(s6)
mv a5,a4
.L17:
add s5,s0,s5
sw a5,0(s5)
mv a4,a5
j .L16
.size mmerge, .-mmerge
.section .text.startup,"ax",@progbits
.align 1
.globl main
.type main, @function
main:
addi sp,sp,-176
sd s0,160(sp)
sd s4,128(sp)
sd s5,120(sp)
sd s6,112(sp)
sd s7,104(sp)
sd s8,96(sp)
sd ra,168(sp)
sd s1,152(sp)
sd s2,144(sp)
sd s3,136(sp)
sd s9,88(sp)
sd s10,80(sp)
sd s11,72(sp)
li a5,4
lla s0,.LANCHOR0
li a2,68
li a1,255
lla a0,.LANCHOR0+4
sw a5,440(s0)
li s7,0
call memset@plt
li s4,0
li s6,1
li s5,-1
li s8,17
.L109:
call getint@plt
mv s1,a0
call getint@plt
mv s3,a0
addiw s4,s4,1
beq s7,zero,.L37
.L108:
li a5,10
beq s4,a5,.L39
call getint@plt
mv s1,a0
li s7,1
call getint@plt
mv s3,a0
addiw s4,s4,1
bne s7,zero,.L108
.L37:
lw a5,440(s0)
addiw s2,s1,-1
mulw s2,s2,a5
addw s9,s2,a0
slli s10,s9,2
add a4,s0,s10
sw s9,0(a4)
mv s2,s9
beq s1,s6,.L121
.L40:
beq s1,a5,.L122
.L60:
bge s3,a5,.L80
addiw a1,s2,1
slli a5,a1,2
add a5,s0,a5
lw a5,0(a5)
beq a5,s5,.L80
mv a0,s9
call mmerge
.L80:
ble s3,s6,.L81
addiw a1,s2,-1
slli a5,a1,2
add a5,s0,a5
lw a5,0(a5)
beq a5,s5,.L81
mv a0,s9
call mmerge
.L81:
lw a1,440(s0)
ble a1,s1,.L82
addw a1,s2,a1
slli a5,a1,2
add a5,s0,a5
lw a5,0(a5)
beq a5,s5,.L82
mv a0,s9
call mmerge
.L82:
ble s1,s6,.L83
lw a5,440(s0)
subw a1,s2,a5
slli a5,a1,2
add a5,s0,a5
lw a5,0(a5)
beq a5,s5,.L83
mv a0,s9
call mmerge
.L83:
lw s1,0(s0)
beq s1,s5,.L86
lw a5,68(s0)
beq a5,s5,.L86
bne s1,zero,.L87
beq a5,s8,.L86
.L88:
slli s2,a5,2
add a4,s0,s2
lw a3,0(a4)
beq a5,a3,.L99
slli s3,a3,2
add a5,s0,s3
lw a5,0(a5)
beq a3,a5,.L100
slli s9,a5,2
add a4,s0,s9
lw a4,0(a4)
beq a5,a4,.L101
slli s10,a4,2
add a5,s0,s10
lw a5,0(a5)
beq a4,a5,.L102
slli s11,a5,2
add a4,s0,s11
lw a4,0(a4)
beq a5,a4,.L103
slli a3,a4,2
add a5,s0,a3
lw a5,0(a5)
bne a4,a5,.L123
.L104:
add s11,s0,s11
sw a5,0(s11)
.L103:
add s10,s0,s10
sw a5,0(s10)
.L102:
add s9,s0,s9
sw a5,0(s9)
mv a4,a5
.L101:
add s3,s0,s3
sw a4,0(s3)
mv a5,a4
.L100:
add s2,s0,s2
sw a5,0(s2)
mv a3,a5
.L99:
sw a3,68(s0)
mv a4,s1
mv a5,a3
.L98:
beq a5,a4,.L124
.L86:
li a5,10
bne s4,a5,.L109
li a0,-1
call putint@plt
li a0,10
call putch@plt
.L39:
ld ra,168(sp)
ld s0,160(sp)
ld s1,152(sp)
ld s2,144(sp)
ld s3,136(sp)
ld s4,128(sp)
ld s5,120(sp)
ld s6,112(sp)
ld s7,104(sp)
ld s8,96(sp)
ld s9,88(sp)
ld s10,80(sp)
ld s11,72(sp)
li a0,0
addi sp,sp,176
jr ra
.L122:
sw s8,68(s0)
add a4,s0,s10
lw a4,0(a4)
li a3,17
beq s9,a4,.L61
slli a5,a4,2
add a3,s0,a5
lw s11,0(a3)
beq a4,s11,.L62
slli a3,s11,2
add a4,s0,a3
lw a4,0(a4)
beq s11,a4,.L63
slli s11,a4,2
add a2,s0,s11
lw a2,0(a2)
beq a4,a2,.L64
slli a4,a2,2
add a1,s0,a4
lw a1,0(a1)
bne a2,a1,.L125
.L65:
add s11,s0,s11
sw a2,0(s11)
.L64:
add a3,s0,a3
sw a2,0(a3)
mv a4,a2
.L63:
add a5,s0,a5
sw a4,0(a5)
mv s11,a4
.L62:
add s10,s0,s10
sw s11,0(s10)
lw a5,68(s0)
beq a5,s8,.L126
slli s10,a5,2
add a4,s0,s10
lw a3,0(a4)
beq a5,a3,.L71
slli a4,a3,2
add a5,s0,a4
lw a5,0(a5)
beq a3,a5,.L72
slli a2,a5,2
add a3,s0,a2
lw a3,0(a3)
beq a5,a3,.L73
slli a5,a3,2
add a1,s0,a5
lw a1,0(a1)
bne a3,a1,.L127
.L74:
add a2,s0,a2
sw a3,0(a2)
.L73:
add a4,s0,a4
sw a3,0(a4)
mv a5,a3
.L72:
add s10,s0,s10
sw a5,0(s10)
mv a3,a5
.L71:
lw a5,440(s0)
sw a3,68(s0)
mv a4,s11
.L61:
beq a3,a4,.L60
slli a4,a4,2
add a4,s0,a4
sw a3,0(a4)
j .L60
.L121:
sw zero,.LANCHOR0,a3
lw a4,0(a4)
li a3,0
beq s9,a4,.L41
slli a5,a4,2
add a3,s0,a5
lw s11,0(a3)
beq a4,s11,.L42
slli a3,s11,2
add a4,s0,a3
lw a4,0(a4)
beq s11,a4,.L43
slli s11,a4,2
add a2,s0,s11
lw a2,0(a2)
beq a4,a2,.L44
slli a4,a2,2
add a1,s0,a4
lw a1,0(a1)
bne a2,a1,.L128
.L45:
add s11,s0,s11
sw a2,0(s11)
.L44:
add a3,s0,a3
sw a2,0(a3)
mv a4,a2
.L43:
add a5,s0,a5
sw a4,0(a5)
mv s11,a4
.L42:
add a5,s0,s10
sw s11,0(a5)
lw a5,0(s0)
beq a5,zero,.L129
slli a4,a5,2
add a3,s0,a4
lw a3,0(a3)
beq a5,a3,.L51
slli a2,a3,2
add a5,s0,a2
lw a5,0(a5)
beq a3,a5,.L52
slli a1,a5,2
add a3,s0,a1
lw a3,0(a3)
beq a5,a3,.L53
slli a5,a3,2
add a0,s0,a5
lw a0,0(a0)
bne a3,a0,.L130
.L54:
add a1,s0,a1
sw a3,0(a1)
.L53:
add a2,s0,a2
sw a3,0(a2)
mv a5,a3
.L52:
add a4,s0,a4
sw a5,0(a4)
mv a3,a5
.L51:
lw a5,440(s0)
sw a3,0(s0)
mv a4,s11
.L41:
beq a3,a4,.L40
slli a4,a4,2
add a4,s0,a4
sw a3,0(a4)
bne s1,a5,.L60
j .L122
.L87:
slli s2,s1,2
add a4,s0,s2
lw a4,0(a4)
beq s1,a4,.L89
slli s1,a4,2
add a5,s0,s1
lw a3,0(a5)
beq a4,a3,.L90
slli s3,a3,2
add a5,s0,s3
lw a5,0(a5)
beq a3,a5,.L91
slli s9,a5,2
add a4,s0,s9
lw a4,0(a4)
beq a5,a4,.L92
slli s10,a4,2
add a5,s0,s10
lw a5,0(a5)
beq a4,a5,.L93
slli s11,a5,2
add a4,s0,s11
lw a4,0(a4)
bne a5,a4,.L131
.L94:
add s10,s0,s10
sw a4,0(s10)
.L93:
add s9,s0,s9
sw a4,0(s9)
.L92:
add s3,s0,s3
sw a4,0(s3)
mv a5,a4
.L91:
add s1,s0,s1
sw a5,0(s1)
mv a3,a5
.L90:
add s2,s0,s2
sw a3,0(s2)
lw a5,68(s0)
mv a4,a3
.L89:
sw a4,0(s0)
beq a5,s8,.L98
mv s1,a4
j .L88
.L124:
mv a0,s4
call putint@plt
li a0,10
call putch@plt
j .L108
.L131:
slli a3,a4,2
add a5,s0,a3
lw a5,0(a5)
bne a4,a5,.L132
.L95:
add s11,s0,s11
sw a5,0(s11)
mv a4,a5
j .L94
.L123:
slli a2,a5,2
add a4,s0,a2
lw a4,0(a4)
bne a5,a4,.L133
.L105:
add a3,s0,a3
sw a4,0(a3)
mv a5,a4
j .L104
.L128:
slli a6,a1,2
add a2,s0,a6
lw a2,0(a2)
beq a1,a2,.L46
slli a7,a2,2
add a1,s0,a7
lw a1,0(a1)
bne a2,a1,.L134
.L47:
add a6,s0,a6
sw a1,0(a6)
mv a2,a1
.L46:
add a4,s0,a4
sw a2,0(a4)
j .L45
.L130:
slli a6,a0,2
add a3,s0,a6
lw a3,0(a3)
beq a0,a3,.L55
slli a7,a3,2
add a0,s0,a7
lw a0,0(a0)
bne a3,a0,.L135
.L56:
add a6,s0,a6
sw a0,0(a6)
mv a3,a0
.L55:
add a5,s0,a5
sw a3,0(a5)
j .L54
.L125:
slli a6,a1,2
add a2,s0,a6
lw a2,0(a2)
beq a1,a2,.L66
slli a7,a2,2
add a1,s0,a7
lw a1,0(a1)
bne a2,a1,.L136
.L67:
add a6,s0,a6
sw a1,0(a6)
mv a2,a1
.L66:
add a4,s0,a4
sw a2,0(a4)
j .L65
.L127:
slli a6,a1,2
add a3,s0,a6
lw a3,0(a3)
beq a1,a3,.L75
slli a7,a3,2
add a1,s0,a7
lw a1,0(a1)
bne a3,a1,.L137
.L76:
add a6,s0,a6
sw a1,0(a6)
mv a3,a1
.L75:
add a5,s0,a5
sw a3,0(a5)
j .L74
.L137:
slli t1,a1,2
add a3,s0,t1
lw a3,0(a3)
beq a1,a3,.L77
slli a1,a3,2
add a1,s0,a1
lw a0,0(a1)
sd a1,48(sp)
bne a3,a0,.L138
.L78:
add t1,s0,t1
sw a0,0(t1)
mv a3,a0
.L77:
add a7,s0,a7
sw a3,0(a7)
mv a1,a3
j .L76
.L136:
slli t1,a1,2
add a2,s0,t1
lw a2,0(a2)
beq a1,a2,.L68
slli a1,a2,2
add a0,s0,a1
lw a0,0(a0)
sd a1,48(sp)
bne a2,a0,.L139
.L69:
add t1,s0,t1
sw a0,0(t1)
mv a2,a0
.L68:
add a7,s0,a7
sw a2,0(a7)
mv a1,a2
j .L67
.L135:
slli t1,a0,2
add a3,s0,t1
lw a3,0(a3)
beq a0,a3,.L57
slli t3,a3,2
add t3,s0,t3
lw a0,0(t3)
sd t3,56(sp)
bne a3,a0,.L140
.L58:
add t1,s0,t1
sw a0,0(t1)
mv a3,a0
.L57:
add a7,s0,a7
sw a3,0(a7)
mv a0,a3
j .L56
.L134:
slli t1,a1,2
add a2,s0,t1
lw a2,0(a2)
beq a1,a2,.L48
slli a1,a2,2
add a1,s0,a1
lw a0,0(a1)
sd a1,48(sp)
bne a2,a0,.L141
.L49:
add t1,s0,t1
sw a0,0(t1)
mv a2,a0
.L48:
add a7,s0,a7
sw a2,0(a7)
mv a1,a2
j .L47
.L133:
slli a1,a4,2
add a5,s0,a1
lw a5,0(a5)
beq a4,a5,.L106
slli a4,a5,2
add a4,s0,a4
lw a0,0(a4)
sd a4,24(sp)
bne a5,a0,.L142
.L107:
add a1,s0,a1
sw a0,0(a1)
mv a5,a0
.L106:
add a2,s0,a2
sw a5,0(a2)
mv a4,a5
j .L105
.L132:
slli a2,a5,2
add a4,s0,a2
lw a4,0(a4)
beq a5,a4,.L96
slli a5,a4,2
add a5,s0,a5
lw a0,0(a5)
sd a5,16(sp)
bne a4,a0,.L143
.L97:
add a2,s0,a2
sw a0,0(a2)
mv a4,a0
.L96:
add a3,s0,a3
sw a4,0(a3)
mv a5,a4
j .L95
.L143:
sd a2,8(sp)
sd a3,0(sp)
call findfa
ld a5,16(sp)
ld a2,8(sp)
ld a3,0(sp)
sw a0,0(a5)
j .L97
.L142:
sd a1,16(sp)
sd a2,8(sp)
sd a3,0(sp)
call findfa
ld a4,24(sp)
ld a1,16(sp)
ld a2,8(sp)
ld a3,0(sp)
sw a0,0(a4)
j .L107
.L141:
sd t1,40(sp)
sd a7,32(sp)
sd a6,24(sp)
sd a4,16(sp)
sd a3,8(sp)
sd a5,0(sp)
call findfa
ld a1,48(sp)
ld t1,40(sp)
ld a7,32(sp)
ld a6,24(sp)
ld a4,16(sp)
ld a3,8(sp)
ld a5,0(sp)
sw a0,0(a1)
j .L49
.L140:
sd t1,48(sp)
sd a7,40(sp)
sd a6,32(sp)
sd a5,24(sp)
sd a1,16(sp)
sd a2,8(sp)
sd a4,0(sp)
call findfa
ld t3,56(sp)
ld t1,48(sp)
ld a7,40(sp)
ld a6,32(sp)
ld a5,24(sp)
ld a1,16(sp)
ld a2,8(sp)
ld a4,0(sp)
sw a0,0(t3)
j .L58
.L139:
sd t1,40(sp)
sd a7,32(sp)
sd a6,24(sp)
sd a4,16(sp)
sd a3,8(sp)
sd a5,0(sp)
call findfa
ld a1,48(sp)
ld t1,40(sp)
ld a7,32(sp)
add a1,s0,a1
ld a6,24(sp)
ld a4,16(sp)
ld a3,8(sp)
ld a5,0(sp)
sw a0,0(a1)
j .L69
.L138:
sd t1,40(sp)
sd a7,32(sp)
sd a6,24(sp)
sd a5,16(sp)
sd a2,8(sp)
sd a4,0(sp)
call findfa
ld a1,48(sp)
ld t1,40(sp)
ld a7,32(sp)
ld a6,24(sp)
ld a5,16(sp)
ld a2,8(sp)
ld a4,0(sp)
sw a0,0(a1)
j .L78
.L129:
lw a5,440(s0)
mv a4,s11
li a3,0
j .L41
.L126:
lw a5,440(s0)
mv a4,s11
li a3,17
j .L61
.size main, .-main
.globl n
.globl array
.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 array, @object
.size array, 440
array:
.zero 440
.type n, @object
.size n, 4
n:
.zero 4
.type _sysy_idx, @object
.size _sysy_idx, 4
_sysy_idx:
.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