forked from NUDT-compiler/nudt-compiler-cpp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1424 lines
27 KiB
1424 lines
27 KiB
.data
|
|
.globl base
|
|
.p2align 2
|
|
base:
|
|
.word 16
|
|
.globl a
|
|
.p2align 2
|
|
a:
|
|
.zero 120000040
|
|
.globl ans
|
|
.p2align 2
|
|
ans:
|
|
.word 0
|
|
|
|
.text
|
|
.globl getMaxNum
|
|
.p2align 2
|
|
getMaxNum:
|
|
.L.getMaxNum.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
sub sp, sp, #64
|
|
stur w0, [x29, #-4]
|
|
stur x1, [x29, #-16]
|
|
ldur w8, [x29, #-4]
|
|
stur w8, [x29, #-28]
|
|
mov w8, #0
|
|
stur w8, [x29, #-20]
|
|
mov w8, #0
|
|
stur w8, [x29, #-24]
|
|
b .L.getMaxNum.1
|
|
.L.getMaxNum.1:
|
|
ldur w8, [x29, #-24]
|
|
stur w8, [x29, #-32]
|
|
ldur w8, [x29, #-28]
|
|
stur w8, [x29, #-36]
|
|
ldur w8, [x29, #-32]
|
|
ldur w9, [x29, #-36]
|
|
cmp w8, w9
|
|
b.lt .L.getMaxNum.2
|
|
b .L.getMaxNum.3
|
|
.L.getMaxNum.2:
|
|
ldur w8, [x29, #-24]
|
|
stur w8, [x29, #-40]
|
|
ldur x15, [x29, #-16]
|
|
ldur w14, [x29, #-40]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
stur w8, [x29, #-44]
|
|
ldur w8, [x29, #-20]
|
|
stur w8, [x29, #-48]
|
|
ldur w8, [x29, #-44]
|
|
ldur w9, [x29, #-48]
|
|
cmp w8, w9
|
|
b.gt .L.getMaxNum.4
|
|
b .L.getMaxNum.5
|
|
.L.getMaxNum.3:
|
|
ldur w8, [x29, #-20]
|
|
stur w8, [x29, #-52]
|
|
ldur w0, [x29, #-52]
|
|
add sp, sp, #64
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.getMaxNum.4:
|
|
ldur w8, [x29, #-24]
|
|
stur w8, [x29, #-56]
|
|
ldur x15, [x29, #-16]
|
|
ldur w14, [x29, #-56]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
stur w8, [x29, #-60]
|
|
ldur w8, [x29, #-60]
|
|
stur w8, [x29, #-20]
|
|
b .L.getMaxNum.5
|
|
.L.getMaxNum.5:
|
|
ldur w8, [x29, #-24]
|
|
stur w8, [x29, #-64]
|
|
ldur w8, [x29, #-64]
|
|
mov w9, #1
|
|
add w8, w8, w9
|
|
stur w8, [x29, #-24]
|
|
b .L.getMaxNum.1
|
|
|
|
.text
|
|
.globl getNumPos
|
|
.p2align 2
|
|
getNumPos:
|
|
.L.getNumPos.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
sub sp, sp, #48
|
|
stur w0, [x29, #-4]
|
|
stur w1, [x29, #-8]
|
|
ldur w8, [x29, #-4]
|
|
stur w8, [x29, #-20]
|
|
ldur w8, [x29, #-8]
|
|
stur w8, [x29, #-24]
|
|
mov w8, #1
|
|
stur w8, [x29, #-12]
|
|
mov w8, #0
|
|
stur w8, [x29, #-16]
|
|
b .L.getNumPos.1
|
|
.L.getNumPos.1:
|
|
ldur w8, [x29, #-16]
|
|
stur w8, [x29, #-28]
|
|
ldur w8, [x29, #-24]
|
|
stur w8, [x29, #-32]
|
|
ldur w8, [x29, #-28]
|
|
ldur w9, [x29, #-32]
|
|
cmp w8, w9
|
|
b.lt .L.getNumPos.2
|
|
b .L.getNumPos.3
|
|
.L.getNumPos.2:
|
|
ldur w8, [x29, #-20]
|
|
stur w8, [x29, #-36]
|
|
ldur w8, [x29, #-36]
|
|
mov w9, #16
|
|
sdiv w8, w8, w9
|
|
stur w8, [x29, #-20]
|
|
ldur w8, [x29, #-16]
|
|
stur w8, [x29, #-40]
|
|
ldur w8, [x29, #-40]
|
|
mov w9, #1
|
|
add w8, w8, w9
|
|
stur w8, [x29, #-16]
|
|
b .L.getNumPos.1
|
|
.L.getNumPos.3:
|
|
ldur w8, [x29, #-20]
|
|
stur w8, [x29, #-44]
|
|
ldur w0, [x29, #-44]
|
|
mov w8, #16
|
|
sdiv w10, w0, w8
|
|
msub w0, w10, w8, w0
|
|
add sp, sp, #48
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
|
|
.text
|
|
.globl radixSort
|
|
.p2align 2
|
|
radixSort:
|
|
.L.radixSort.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
sub sp, sp, #592
|
|
stur w0, [x29, #-4]
|
|
stur x1, [x29, #-16]
|
|
stur w2, [x29, #-20]
|
|
stur w3, [x29, #-24]
|
|
ldur w8, [x29, #-4]
|
|
stur w8, [x29, #-236]
|
|
ldur w8, [x29, #-20]
|
|
stur w8, [x29, #-240]
|
|
ldur w8, [x29, #-24]
|
|
stur w8, [x29, #-244]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #4
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #8
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #12
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #16
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #20
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #24
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #28
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #32
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #36
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #40
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #44
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #48
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #52
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #56
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x14, #60
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #4
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #8
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #12
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #16
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #20
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #24
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #28
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #32
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #36
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #40
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #44
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #48
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #52
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #56
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x14, #60
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #4
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #8
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #12
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #16
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #20
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #24
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #28
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #32
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #36
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #40
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #44
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #48
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #52
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #56
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x14, #60
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
ldur w8, [x29, #-236]
|
|
stur w8, [x29, #-248]
|
|
ldur w8, [x29, #-248]
|
|
mov w9, #-1
|
|
cmp w8, w9
|
|
b.eq .L.radixSort.1
|
|
b .L.radixSort.3
|
|
.L.radixSort.1:
|
|
add sp, sp, #592
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.radixSort.2:
|
|
ldur w8, [x29, #-240]
|
|
stur w8, [x29, #-252]
|
|
ldur w8, [x29, #-252]
|
|
stur w8, [x29, #-220]
|
|
b .L.radixSort.4
|
|
.L.radixSort.3:
|
|
ldur w8, [x29, #-240]
|
|
stur w8, [x29, #-256]
|
|
ldur w8, [x29, #-244]
|
|
mov x13, x29
|
|
sub x13, x13, #260
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-256]
|
|
mov w10, #1
|
|
add w8, w8, w10
|
|
mov x13, x29
|
|
sub x13, x13, #260
|
|
ldr w9, [x13]
|
|
cmp w8, w9
|
|
b.ge .L.radixSort.1
|
|
b .L.radixSort.2
|
|
.L.radixSort.4:
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #264
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-244]
|
|
mov x13, x29
|
|
sub x13, x13, #268
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #264
|
|
ldr w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #268
|
|
ldr w9, [x13]
|
|
cmp w8, w9
|
|
b.lt .L.radixSort.5
|
|
b .L.radixSort.6
|
|
.L.radixSort.5:
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #272
|
|
str w8, [x13]
|
|
ldur x15, [x29, #-16]
|
|
mov x13, x29
|
|
sub x13, x13, #272
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #276
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-236]
|
|
mov x13, x29
|
|
sub x13, x13, #280
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #276
|
|
ldr w0, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #280
|
|
ldr w1, [x13]
|
|
bl getNumPos
|
|
mov x13, x29
|
|
sub x13, x13, #284
|
|
str w0, [x13]
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #288
|
|
str w8, [x13]
|
|
ldur x15, [x29, #-16]
|
|
mov x13, x29
|
|
sub x13, x13, #288
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #292
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-236]
|
|
mov x13, x29
|
|
sub x13, x13, #296
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #292
|
|
ldr w0, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #296
|
|
ldr w1, [x13]
|
|
bl getNumPos
|
|
mov x13, x29
|
|
sub x13, x13, #300
|
|
str w0, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x13, x29
|
|
sub x13, x13, #300
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #304
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #304
|
|
ldr w8, [x13]
|
|
mov w9, #1
|
|
add w8, w8, w9
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x13, x29
|
|
sub x13, x13, #284
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #308
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #308
|
|
ldr w8, [x13]
|
|
mov w9, #1
|
|
add w8, w8, w9
|
|
stur w8, [x29, #-220]
|
|
b .L.radixSort.4
|
|
.L.radixSort.6:
|
|
ldur w8, [x29, #-240]
|
|
mov x13, x29
|
|
sub x13, x13, #312
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #312
|
|
ldr w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
str w8, [x15]
|
|
ldur w8, [x29, #-240]
|
|
mov x13, x29
|
|
sub x13, x13, #316
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #320
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #316
|
|
ldr w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #320
|
|
ldr w9, [x13]
|
|
add w8, w8, w9
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
str w8, [x15]
|
|
mov w8, #1
|
|
stur w8, [x29, #-220]
|
|
b .L.radixSort.7
|
|
.L.radixSort.7:
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #324
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #324
|
|
ldr w8, [x13]
|
|
mov w9, #16
|
|
cmp w8, w9
|
|
b.lt .L.radixSort.8
|
|
b .L.radixSort.9
|
|
.L.radixSort.8:
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #328
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #332
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x13, x29
|
|
sub x13, x13, #332
|
|
ldr w14, [x13]
|
|
mov w8, #1
|
|
sub w14, w14, w8
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #336
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #336
|
|
ldr w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #328
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #340
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #344
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #344
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #348
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #352
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x13, x29
|
|
sub x13, x13, #352
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #356
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #348
|
|
ldr w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #356
|
|
ldr w9, [x13]
|
|
add w8, w8, w9
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x13, x29
|
|
sub x13, x13, #340
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #360
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #360
|
|
ldr w8, [x13]
|
|
mov w9, #1
|
|
add w8, w8, w9
|
|
stur w8, [x29, #-220]
|
|
b .L.radixSort.7
|
|
.L.radixSort.9:
|
|
mov w8, #0
|
|
stur w8, [x29, #-220]
|
|
b .L.radixSort.10
|
|
.L.radixSort.10:
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #364
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #364
|
|
ldr w8, [x13]
|
|
mov w9, #16
|
|
cmp w8, w9
|
|
b.lt .L.radixSort.11
|
|
b .L.radixSort.12
|
|
.L.radixSort.11:
|
|
b .L.radixSort.13
|
|
.L.radixSort.12:
|
|
ldur w8, [x29, #-240]
|
|
mov x13, x29
|
|
sub x13, x13, #368
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #368
|
|
ldr w8, [x13]
|
|
stur w8, [x29, #-232]
|
|
ldur w8, [x29, #-240]
|
|
mov x13, x29
|
|
sub x13, x13, #372
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #372
|
|
ldr w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
str w8, [x15]
|
|
ldur w8, [x29, #-240]
|
|
mov x13, x29
|
|
sub x13, x13, #376
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #380
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #376
|
|
ldr w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #380
|
|
ldr w9, [x13]
|
|
add w8, w8, w9
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
str w8, [x15]
|
|
mov w8, #0
|
|
stur w8, [x29, #-232]
|
|
b .L.radixSort.19
|
|
.L.radixSort.13:
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #384
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #384
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #388
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #392
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x13, x29
|
|
sub x13, x13, #392
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #396
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #388
|
|
ldr w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #396
|
|
ldr w9, [x13]
|
|
cmp w8, w9
|
|
b.lt .L.radixSort.14
|
|
b .L.radixSort.15
|
|
.L.radixSort.14:
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #400
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #400
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #404
|
|
str w8, [x13]
|
|
ldur x15, [x29, #-16]
|
|
mov x13, x29
|
|
sub x13, x13, #404
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #408
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #408
|
|
ldr w8, [x13]
|
|
stur w8, [x29, #-224]
|
|
b .L.radixSort.16
|
|
.L.radixSort.15:
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #412
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #412
|
|
ldr w8, [x13]
|
|
mov w9, #1
|
|
add w8, w8, w9
|
|
stur w8, [x29, #-220]
|
|
b .L.radixSort.10
|
|
.L.radixSort.16:
|
|
ldur w8, [x29, #-224]
|
|
mov x13, x29
|
|
sub x13, x13, #416
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-236]
|
|
mov x13, x29
|
|
sub x13, x13, #420
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #416
|
|
ldr w0, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #420
|
|
ldr w1, [x13]
|
|
bl getNumPos
|
|
mov x13, x29
|
|
sub x13, x13, #424
|
|
str w0, [x13]
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #428
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #424
|
|
ldr w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #428
|
|
ldr w9, [x13]
|
|
cmp w8, w9
|
|
b.ne .L.radixSort.17
|
|
b .L.radixSort.18
|
|
.L.radixSort.17:
|
|
ldur w8, [x29, #-224]
|
|
mov x13, x29
|
|
sub x13, x13, #432
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #432
|
|
ldr w8, [x13]
|
|
stur w8, [x29, #-228]
|
|
ldur w8, [x29, #-228]
|
|
mov x13, x29
|
|
sub x13, x13, #436
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-236]
|
|
mov x13, x29
|
|
sub x13, x13, #440
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #436
|
|
ldr w0, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #440
|
|
ldr w1, [x13]
|
|
bl getNumPos
|
|
mov x13, x29
|
|
sub x13, x13, #444
|
|
str w0, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #444
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #448
|
|
str w8, [x13]
|
|
ldur x15, [x29, #-16]
|
|
mov x13, x29
|
|
sub x13, x13, #448
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #452
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #452
|
|
ldr w8, [x13]
|
|
stur w8, [x29, #-224]
|
|
ldur w8, [x29, #-228]
|
|
mov x13, x29
|
|
sub x13, x13, #456
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-236]
|
|
mov x13, x29
|
|
sub x13, x13, #460
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #456
|
|
ldr w0, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #460
|
|
ldr w1, [x13]
|
|
bl getNumPos
|
|
mov x13, x29
|
|
sub x13, x13, #464
|
|
str w0, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #464
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #468
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-228]
|
|
mov x13, x29
|
|
sub x13, x13, #472
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #472
|
|
ldr w8, [x13]
|
|
ldur x15, [x29, #-16]
|
|
mov x13, x29
|
|
sub x13, x13, #468
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
ldur w8, [x29, #-228]
|
|
mov x13, x29
|
|
sub x13, x13, #476
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-236]
|
|
mov x13, x29
|
|
sub x13, x13, #480
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #476
|
|
ldr w0, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #480
|
|
ldr w1, [x13]
|
|
bl getNumPos
|
|
mov x13, x29
|
|
sub x13, x13, #484
|
|
str w0, [x13]
|
|
ldur w8, [x29, #-228]
|
|
mov x13, x29
|
|
sub x13, x13, #488
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-236]
|
|
mov x13, x29
|
|
sub x13, x13, #492
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #488
|
|
ldr w0, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #492
|
|
ldr w1, [x13]
|
|
bl getNumPos
|
|
mov x13, x29
|
|
sub x13, x13, #496
|
|
str w0, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #496
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #500
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #500
|
|
ldr w8, [x13]
|
|
mov w9, #1
|
|
add w8, w8, w9
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #484
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
b .L.radixSort.16
|
|
.L.radixSort.18:
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #504
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #504
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #508
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-224]
|
|
mov x13, x29
|
|
sub x13, x13, #512
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #512
|
|
ldr w8, [x13]
|
|
ldur x15, [x29, #-16]
|
|
mov x13, x29
|
|
sub x13, x13, #508
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #516
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-220]
|
|
mov x13, x29
|
|
sub x13, x13, #520
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #520
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #524
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #524
|
|
ldr w8, [x13]
|
|
mov w9, #1
|
|
add w8, w8, w9
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #516
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
b .L.radixSort.13
|
|
.L.radixSort.19:
|
|
ldur w8, [x29, #-232]
|
|
mov x13, x29
|
|
sub x13, x13, #528
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #528
|
|
ldr w8, [x13]
|
|
mov w9, #16
|
|
cmp w8, w9
|
|
b.lt .L.radixSort.20
|
|
b .L.radixSort.21
|
|
.L.radixSort.20:
|
|
ldur w8, [x29, #-232]
|
|
mov x13, x29
|
|
sub x13, x13, #532
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #532
|
|
ldr w8, [x13]
|
|
mov w9, #0
|
|
cmp w8, w9
|
|
b.gt .L.radixSort.22
|
|
b .L.radixSort.23
|
|
.L.radixSort.21:
|
|
add sp, sp, #592
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.radixSort.22:
|
|
ldur w8, [x29, #-232]
|
|
mov x13, x29
|
|
sub x13, x13, #536
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-232]
|
|
mov x13, x29
|
|
sub x13, x13, #540
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x13, x29
|
|
sub x13, x13, #540
|
|
ldr w14, [x13]
|
|
mov w8, #1
|
|
sub w14, w14, w8
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #544
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #544
|
|
ldr w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #536
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
ldur w8, [x29, #-232]
|
|
mov x13, x29
|
|
sub x13, x13, #548
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-232]
|
|
mov x13, x29
|
|
sub x13, x13, #552
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #552
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #556
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-232]
|
|
mov x13, x29
|
|
sub x13, x13, #560
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #216
|
|
mov x13, x29
|
|
sub x13, x13, #560
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #564
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #556
|
|
ldr w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #564
|
|
ldr w9, [x13]
|
|
add w8, w8, w9
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x13, x29
|
|
sub x13, x13, #548
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
str w8, [x15]
|
|
b .L.radixSort.23
|
|
.L.radixSort.23:
|
|
ldur w8, [x29, #-236]
|
|
mov x13, x29
|
|
sub x13, x13, #568
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-232]
|
|
mov x13, x29
|
|
sub x13, x13, #572
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #88
|
|
mov x13, x29
|
|
sub x13, x13, #572
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #576
|
|
str w8, [x13]
|
|
ldur w8, [x29, #-232]
|
|
mov x13, x29
|
|
sub x13, x13, #580
|
|
str w8, [x13]
|
|
mov x15, x29
|
|
sub x15, x15, #152
|
|
mov x13, x29
|
|
sub x13, x13, #580
|
|
ldr w14, [x13]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
mov x13, x29
|
|
sub x13, x13, #584
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #568
|
|
ldr w0, [x13]
|
|
mov w8, #1
|
|
sub w0, w0, w8
|
|
ldur x1, [x29, #-16]
|
|
mov x13, x29
|
|
sub x13, x13, #576
|
|
ldr w2, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #584
|
|
ldr w3, [x13]
|
|
bl radixSort
|
|
ldur w8, [x29, #-232]
|
|
mov x13, x29
|
|
sub x13, x13, #588
|
|
str w8, [x13]
|
|
mov x13, x29
|
|
sub x13, x13, #588
|
|
ldr w8, [x13]
|
|
mov w9, #1
|
|
add w8, w8, w9
|
|
stur w8, [x29, #-232]
|
|
b .L.radixSort.19
|
|
|
|
.text
|
|
.globl main
|
|
.p2align 2
|
|
main:
|
|
.L.main.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
sub sp, sp, #64
|
|
adrp x0, a
|
|
add x0, x0, :lo12:a
|
|
bl getarray
|
|
stur w0, [x29, #-12]
|
|
ldur w8, [x29, #-12]
|
|
stur w8, [x29, #-4]
|
|
bl starttime
|
|
ldur w8, [x29, #-4]
|
|
stur w8, [x29, #-16]
|
|
mov w0, #8
|
|
adrp x1, a
|
|
add x1, x1, :lo12:a
|
|
mov w2, #0
|
|
ldur w3, [x29, #-16]
|
|
bl radixSort
|
|
mov w8, #0
|
|
stur w8, [x29, #-8]
|
|
b .L.main.1
|
|
.L.main.1:
|
|
ldur w8, [x29, #-8]
|
|
stur w8, [x29, #-20]
|
|
ldur w8, [x29, #-4]
|
|
stur w8, [x29, #-24]
|
|
ldur w8, [x29, #-20]
|
|
ldur w9, [x29, #-24]
|
|
cmp w8, w9
|
|
b.lt .L.main.2
|
|
b .L.main.3
|
|
.L.main.2:
|
|
adrp x13, ans
|
|
ldr w8, [x13, #:lo12:ans]
|
|
stur w8, [x29, #-28]
|
|
ldur w8, [x29, #-8]
|
|
stur w8, [x29, #-32]
|
|
ldur w8, [x29, #-8]
|
|
stur w8, [x29, #-36]
|
|
adrp x15, a
|
|
add x15, x15, :lo12:a
|
|
ldur w14, [x29, #-36]
|
|
sxtw x14, w14
|
|
lsl x14, x14, #2
|
|
add x15, x15, x14
|
|
ldr w8, [x15]
|
|
stur w8, [x29, #-40]
|
|
ldur w8, [x29, #-8]
|
|
stur w8, [x29, #-44]
|
|
ldur w8, [x29, #-28]
|
|
ldur w9, [x29, #-32]
|
|
ldur w10, [x29, #-40]
|
|
mov w11, #2
|
|
ldur w8, [x29, #-44]
|
|
add w11, w11, w8
|
|
sdiv w10, w10, w11
|
|
msub w10, w10, w11, w10
|
|
mul w9, w9, w10
|
|
add w8, w8, w9
|
|
adrp x13, ans
|
|
str w8, [x13, #:lo12:ans]
|
|
ldur w8, [x29, #-8]
|
|
stur w8, [x29, #-48]
|
|
ldur w8, [x29, #-48]
|
|
mov w9, #1
|
|
add w8, w8, w9
|
|
stur w8, [x29, #-8]
|
|
b .L.main.1
|
|
.L.main.3:
|
|
adrp x13, ans
|
|
ldr w8, [x13, #:lo12:ans]
|
|
stur w8, [x29, #-52]
|
|
ldur w8, [x29, #-52]
|
|
mov w9, #0
|
|
cmp w8, w9
|
|
b.lt .L.main.4
|
|
b .L.main.5
|
|
.L.main.4:
|
|
adrp x13, ans
|
|
ldr w8, [x13, #:lo12:ans]
|
|
stur w8, [x29, #-56]
|
|
mov w8, #0
|
|
ldur w9, [x29, #-56]
|
|
sub w8, w8, w9
|
|
adrp x13, ans
|
|
str w8, [x13, #:lo12:ans]
|
|
b .L.main.5
|
|
.L.main.5:
|
|
bl stoptime
|
|
adrp x13, ans
|
|
ldr w8, [x13, #:lo12:ans]
|
|
stur w8, [x29, #-60]
|
|
ldur w0, [x29, #-60]
|
|
bl putint
|
|
mov w0, #10
|
|
bl putch
|
|
mov w0, #0
|
|
add sp, sp, #64
|
|
ldp x29, x30, [sp], #16
|
|
ret
|