sysy-data/hidden_functional_c/asm/19_search.s

702 lines
10 KiB
ArmAsm
Raw Permalink Normal View History

2024-06-14 13:34:46 +08:00
.text
.attribute 4, 16
.attribute 5, "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0"
.file "19_search.sy"
.globl search
.p2align 1
.type search,@function
search:
addi sp, sp, -64
sd ra, 56(sp)
sd s0, 48(sp)
sd s1, 40(sp)
sd s2, 32(sp)
sd s3, 24(sp)
sd s4, 16(sp)
sd s5, 8(sp)
sd s6, 0(sp)
mv s5, a1
mv s6, a0
li a1, 10
lui a0, 262144
blt a1, a2, .LBB0_60
li a0, 120
mul a0, s6, a0
slli a1, s5, 2
add a0, a0, a1
lui a1, %hi(a)
addi a1, a1, %lo(a)
add s3, a0, a1
lw a6, 0(s3)
lui a0, %hi(x_1)
lw a7, %lo(x_1)(a0)
lui a0, %hi(y_1)
lw t0, %lo(y_1)(a0)
li a0, 1
bne a6, a0, .LBB0_3
li s1, 0
mv a3, s6
mv a4, s5
mv s0, s3
j .LBB0_8
.LBB0_3:
xor a1, a7, s6
xor a3, t0, s5
or a1, a1, a3
sext.w a1, a1
li s1, 0
mv a3, a7
mv a4, t0
mv s0, s3
beqz a1, .LBB0_8
li s1, 0
lui a1, %hi(step)
lw t2, %lo(step)(a1)
addi a1, a1, %lo(step)
lw t4, 4(a1)
li t1, 120
lui a3, %hi(a)
addi t5, a3, %lo(a)
li t3, 1
mv a3, s6
mv a4, s5
.LBB0_5:
addw a3, t2, a3
addw a4, t4, a4
mul a1, a3, t1
slli a5, a4, 2
add a1, a1, a5
add s0, a1, t5
lw a1, 0(s0)
addiw s1, s1, 1
beq a1, t3, .LBB0_8
xor a1, a3, a7
xor a5, a4, t0
or a1, a1, a5
bnez a1, .LBB0_5
mv a3, a7
mv a4, t0
.LBB0_8:
xor a1, a3, a7
xor a5, a4, t0
or a1, a1, a5
sext.w a1, a1
beqz a1, .LBB0_60
addiw s2, a2, 1
sltiu a1, s1, 2
sext.w a0, a3
seqz a2, a0
or a1, a1, a2
lui s4, 262144
bnez a1, .LBB0_15
lui a1, %hi(h)
lw a1, %lo(h)(a1)
addiw a1, a1, 1
xor a0, a0, a1
seqz a1, a0
sext.w a0, a4
seqz a2, a0
or a1, a1, a2
bnez a1, .LBB0_15
lui a1, %hi(w)
lw a1, %lo(w)(a1)
addiw a1, a1, 1
beq a0, a1, .LBB0_15
lui a0, %hi(step)
lw a1, %lo(step)(a0)
addi a0, a0, %lo(step)
lw a2, 4(a0)
sw zero, 0(s0)
subw a0, a3, a1
subw a1, a4, a2
mv a2, s2
call search
lui a1, 262144
addiw a1, a1, -1
blt a0, a1, .LBB0_14
mv a0, a1
.LBB0_14:
li a1, 1
sw a1, 0(s0)
lw a6, 0(s3)
addiw s4, a0, 1
.LBB0_15:
lui a0, %hi(x_1)
lw a7, %lo(x_1)(a0)
lui a0, %hi(y_1)
lw t1, %lo(y_1)(a0)
li a0, 1
bne a6, a0, .LBB0_17
li a5, 0
mv a2, s6
mv a3, s5
mv s0, s3
j .LBB0_22
.LBB0_17:
xor a1, a7, s6
xor a2, t1, s5
or a1, a1, a2
sext.w a1, a1
li a5, 0
mv a2, a7
mv a3, t1
mv s0, s3
beqz a1, .LBB0_22
li a5, 0
lui a1, %hi(step)
addi a1, a1, %lo(step)
lw t3, 8(a1)
lw t4, 12(a1)
li t0, 120
lui a1, %hi(a)
addi a1, a1, %lo(a)
li t2, 1
mv a2, s6
mv a3, s5
.LBB0_19:
addw a2, t3, a2
addw a3, t4, a3
mul a4, a2, t0
slli s1, a3, 2
add a4, a4, s1
add s0, a4, a1
lw a4, 0(s0)
addiw a5, a5, 1
beq a4, t2, .LBB0_22
xor s1, a2, a7
xor a4, a3, t1
or a4, a4, s1
bnez a4, .LBB0_19
mv a2, a7
mv a3, t1
.LBB0_22:
xor a1, a2, a7
xor a4, a3, t1
or a1, a1, a4
sext.w a1, a1
beqz a1, .LBB0_60
sltiu a1, a5, 2
sext.w a0, a2
seqz a4, a0
or a1, a1, a4
bnez a1, .LBB0_29
lui a1, %hi(h)
lw a1, %lo(h)(a1)
addiw a1, a1, 1
xor a0, a0, a1
seqz a1, a0
sext.w a0, a3
seqz a4, a0
or a1, a1, a4
bnez a1, .LBB0_29
lui a1, %hi(w)
lw a1, %lo(w)(a1)
addiw a1, a1, 1
beq a0, a1, .LBB0_29
lui a0, %hi(step)
addi a0, a0, %lo(step)
lw a1, 8(a0)
lw a4, 12(a0)
sw zero, 0(s0)
subw a0, a2, a1
subw a1, a3, a4
mv a2, s2
call search
addiw a0, a0, 1
blt a0, s4, .LBB0_28
mv a0, s4
.LBB0_28:
li a1, 1
sw a1, 0(s0)
lw a6, 0(s3)
mv s4, a0
.LBB0_29:
lui a0, %hi(x_1)
lw a7, %lo(x_1)(a0)
lui a0, %hi(y_1)
lw t1, %lo(y_1)(a0)
li a0, 1
bne a6, a0, .LBB0_31
li a5, 0
mv a2, s6
mv a3, s5
mv s0, s3
j .LBB0_36
.LBB0_31:
xor a1, a7, s6
xor a2, t1, s5
or a1, a1, a2
sext.w a1, a1
li a5, 0
mv a2, a7
mv a3, t1
mv s0, s3
beqz a1, .LBB0_36
li a5, 0
lui a1, %hi(step)
addi a1, a1, %lo(step)
lw t3, 16(a1)
lw t4, 20(a1)
li t0, 120
lui a1, %hi(a)
addi a1, a1, %lo(a)
li t2, 1
mv a2, s6
mv a3, s5
.LBB0_33:
addw a2, t3, a2
addw a3, t4, a3
mul a4, a2, t0
slli s1, a3, 2
add a4, a4, s1
add s0, a4, a1
lw a4, 0(s0)
addiw a5, a5, 1
beq a4, t2, .LBB0_36
xor s1, a2, a7
xor a4, a3, t1
or a4, a4, s1
bnez a4, .LBB0_33
mv a2, a7
mv a3, t1
.LBB0_36:
xor a1, a2, a7
xor a4, a3, t1
or a1, a1, a4
sext.w a1, a1
beqz a1, .LBB0_60
sltiu a1, a5, 2
sext.w a0, a2
seqz a4, a0
or a1, a1, a4
bnez a1, .LBB0_43
lui a1, %hi(h)
lw a1, %lo(h)(a1)
addiw a1, a1, 1
xor a0, a0, a1
seqz a1, a0
sext.w a0, a3
seqz a4, a0
or a1, a1, a4
bnez a1, .LBB0_43
lui a1, %hi(w)
lw a1, %lo(w)(a1)
addiw a1, a1, 1
beq a0, a1, .LBB0_43
lui a0, %hi(step)
addi a0, a0, %lo(step)
lw a1, 16(a0)
lw a4, 20(a0)
sw zero, 0(s0)
subw a0, a2, a1
subw a1, a3, a4
mv a2, s2
call search
addiw a0, a0, 1
blt a0, s4, .LBB0_42
mv a0, s4
.LBB0_42:
li a1, 1
sw a1, 0(s0)
lw a6, 0(s3)
mv s4, a0
.LBB0_43:
lui a0, %hi(x_1)
lw t0, %lo(x_1)(a0)
lui a0, %hi(y_1)
lw a1, %lo(y_1)(a0)
li a0, 1
bne a6, a0, .LBB0_46
li a3, 0
.LBB0_45:
mv a4, s6
mv a5, s5
j .LBB0_51
.LBB0_46:
xor a3, t0, s6
xor a4, a1, s5
or a3, a3, a4
sext.w s1, a3
li a3, 0
mv a4, t0
mv a5, a1
beqz s1, .LBB0_51
li a3, 0
lui a4, %hi(step)
addi a5, a4, %lo(step)
lw a4, 24(a5)
lw a5, 28(a5)
li a6, 120
lui s1, %hi(a)
addi s0, s1, %lo(a)
li a7, 1
.LBB0_48:
addw s6, a4, s6
addw s5, a5, s5
mul a2, s6, a6
slli s1, s5, 2
add a2, a2, s1
add s3, a2, s0
lw a2, 0(s3)
addiw a3, a3, 1
beq a2, a7, .LBB0_45
xor s1, s6, t0
xor a2, s5, a1
or a2, a2, s1
bnez a2, .LBB0_48
mv a4, t0
mv a5, a1
.LBB0_51:
xor a2, a4, t0
xor a1, a1, a5
or a1, a1, a2
sext.w a1, a1
beqz a1, .LBB0_60
sltiu a1, a3, 2
sext.w a0, a4
seqz a2, a0
or a1, a1, a2
bnez a1, .LBB0_58
lui a1, %hi(h)
lw a1, %lo(h)(a1)
addiw a1, a1, 1
xor a0, a0, a1
seqz a1, a0
sext.w a0, a5
seqz a2, a0
or a1, a1, a2
bnez a1, .LBB0_58
lui a1, %hi(w)
lw a1, %lo(w)(a1)
addiw a1, a1, 1
beq a0, a1, .LBB0_58
lui a0, %hi(step)
addi a0, a0, %lo(step)
lw a1, 24(a0)
lw a2, 28(a0)
sw zero, 0(s3)
subw a0, a4, a1
subw a1, a5, a2
mv a2, s2
call search
addiw a0, a0, 1
blt a0, s4, .LBB0_57
mv a0, s4
.LBB0_57:
li a1, 1
sw a1, 0(s3)
mv s4, a0
.LBB0_58:
li a1, 10
lui a0, 262144
blt a1, s4, .LBB0_60
mv a0, s4
.LBB0_60:
ld ra, 56(sp)
ld s0, 48(sp)
ld s1, 40(sp)
ld s2, 32(sp)
ld s3, 24(sp)
ld s4, 16(sp)
ld s5, 8(sp)
ld s6, 0(sp)
addi sp, sp, 64
ret
.Lfunc_end0:
.size search, .Lfunc_end0-search
.globl main
.p2align 1
.type main,@function
main:
addi sp, sp, -128
sd ra, 120(sp)
sd s0, 112(sp)
sd s1, 104(sp)
sd s2, 96(sp)
sd s3, 88(sp)
sd s4, 80(sp)
sd s5, 72(sp)
sd s6, 64(sp)
sd s7, 56(sp)
sd s8, 48(sp)
sd s9, 40(sp)
sd s10, 32(sp)
sd s11, 24(sp)
call getint
lui s8, %hi(w)
sw a0, %lo(w)(s8)
call getint
lw a1, %lo(w)(s8)
lui a2, %hi(h)
sw a0, %lo(h)(a2)
beqz a1, .LBB1_19
lui a2, %hi(a)
addi a2, a2, %lo(a)
addi a3, a2, 60
sd a3, 16(sp)
li s1, 1
lui s4, %hi(x_0)
lui s5, %hi(y_0)
addi a2, a2, 124
sd a2, 8(sp)
li s0, 3
lui s9, %hi(x_1)
lui a2, %hi(y_1)
addi s10, a2, %lo(y_1)
li s11, 2
j .LBB1_3
.LBB1_2:
call putint
li a0, 10
call putch
call getint
sw a0, %lo(w)(s8)
call getint
lw a1, %lo(w)(s8)
lui a2, %hi(h)
sw a0, %lo(h)(a2)
beqz a1, .LBB1_19
.LBB1_3:
li a2, 30
ld a3, 16(sp)
.LBB1_4:
sw s1, -60(a3)
sw s1, -56(a3)
sw s1, -52(a3)
sw s1, -48(a3)
sw s1, -44(a3)
sw s1, -40(a3)
sw s1, -36(a3)
sw s1, -32(a3)
sw s1, -28(a3)
sw s1, -24(a3)
sw s1, -20(a3)
sw s1, -16(a3)
sw s1, -12(a3)
sw s1, -8(a3)
sw s1, -4(a3)
sw s1, 0(a3)
sw s1, 4(a3)
sw s1, 8(a3)
sw s1, 12(a3)
sw s1, 16(a3)
sw s1, 20(a3)
sw s1, 24(a3)
sw s1, 28(a3)
sw s1, 32(a3)
sw s1, 36(a3)
sw s1, 40(a3)
sw s1, 44(a3)
sw s1, 48(a3)
sw s1, 52(a3)
sw s1, 56(a3)
addi a2, a2, -1
addi a3, a3, 120
bnez a2, .LBB1_4
sext.w a2, a0
slti a2, a2, 1
slti a3, a1, 1
or a2, a2, a3
beqz a2, .LBB1_8
.LBB1_6:
lw a0, %lo(x_0)(s4)
lw a1, %lo(y_0)(s5)
li a2, 1
call search
li a1, 11
blt a0, a1, .LBB1_2
li a0, -1
j .LBB1_2
.LBB1_8:
li a2, 1
ld s2, 8(sp)
j .LBB1_11
.LBB1_9:
lui a0, %hi(h)
lw a0, %lo(h)(a0)
.LBB1_10:
addi a2, s6, 1
sext.w a3, a0
addi s2, s2, 120
bge s6, a3, .LBB1_6
.LBB1_11:
mv s6, a2
blez a1, .LBB1_10
li a0, 1
mv s7, s2
j .LBB1_16
.LBB1_13:
sw s6, %lo(x_1)(s9)
mv a0, s10
.LBB1_14:
sw s3, 0(a0)
.LBB1_15:
lw a1, %lo(w)(s8)
addi a0, s3, 1
addi s7, s7, 4
bge s3, a1, .LBB1_9
.LBB1_16:
mv s3, a0
call getint
sw a0, 0(s7)
beq a0, s0, .LBB1_13
bne a0, s11, .LBB1_15
sw s6, %lo(x_0)(s4)
addi a0, s5, %lo(y_0)
j .LBB1_14
.LBB1_19:
li a0, 0
ld ra, 120(sp)
ld s0, 112(sp)
ld s1, 104(sp)
ld s2, 96(sp)
ld s3, 88(sp)
ld s4, 80(sp)
ld s5, 72(sp)
ld s6, 64(sp)
ld s7, 56(sp)
ld s8, 48(sp)
ld s9, 40(sp)
ld s10, 32(sp)
ld s11, 24(sp)
addi sp, sp, 128
ret
.Lfunc_end1:
.size main, .Lfunc_end1-main
.type step,@object
.data
.globl step
.p2align 2
step:
.word 1
.word 0
.word 4294967295
.word 0
.word 0
.word 1
.word 0
.word 4294967295
.size step, 32
.type a,@object
.bss
.globl a
.p2align 2
a:
.zero 3600
.size a, 3600
.type x_1,@object
.section .sbss,"aw",@nobits
.globl x_1
.p2align 2
x_1:
.word 0
.size x_1, 4
.type y_1,@object
.globl y_1
.p2align 2
y_1:
.word 0
.size y_1, 4
.type h,@object
.globl h
.p2align 2
h:
.word 0
.size h, 4
.type w,@object
.globl w
.p2align 2
w:
.word 0
.size w, 4
.type x_0,@object
.globl x_0
.p2align 2
x_0:
.word 0
.size x_0, 4
.type y_0,@object
.globl y_0
.p2align 2
y_0:
.word 0
.size y_0, 4
.type _sysy_start,@object
.bss
.globl _sysy_start
.p2align 3
_sysy_start:
.zero 16
.size _sysy_start, 16
.type _sysy_end,@object
.globl _sysy_end
.p2align 3
_sysy_end:
.zero 16
.size _sysy_end, 16
.type _sysy_l1,@object
.globl _sysy_l1
.p2align 2
_sysy_l1:
.zero 4096
.size _sysy_l1, 4096
.type _sysy_l2,@object
.globl _sysy_l2
.p2align 2
_sysy_l2:
.zero 4096
.size _sysy_l2, 4096
.type _sysy_h,@object
.globl _sysy_h
.p2align 2
_sysy_h:
.zero 4096
.size _sysy_h, 4096
.type _sysy_m,@object
.globl _sysy_m
.p2align 2
_sysy_m:
.zero 4096
.size _sysy_m, 4096
.type _sysy_s,@object
.globl _sysy_s
.p2align 2
_sysy_s:
.zero 4096
.size _sysy_s, 4096
.type _sysy_us,@object
.globl _sysy_us
.p2align 2
_sysy_us:
.zero 4096
.size _sysy_us, 4096
.type _sysy_idx,@object
.section .sbss,"aw",@nobits
.globl _sysy_idx
.p2align 2
_sysy_idx:
.word 0
.size _sysy_idx, 4
.ident "Debian clang version 14.0.6"
.section ".note.GNU-stack","",@progbits
.addrsig