4b2c2b9aa4
Change-Id: Ic084c475844b24092a433ab88138cf58af3abbe4
129 lines
2.5 KiB
NASM
129 lines
2.5 KiB
NASM
;
|
|
; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
|
;
|
|
; Use of this source code is governed by a BSD-style license
|
|
; that can be found in the LICENSE file in the root of the source
|
|
; tree. An additional intellectual property rights grant can be found
|
|
; in the file PATENTS. All contributing project authors may
|
|
; be found in the AUTHORS file in the root of the source tree.
|
|
;
|
|
|
|
|
|
EXPORT |vp9_copy_mem8x4_v6|
|
|
; ARM
|
|
; REQUIRE8
|
|
; PRESERVE8
|
|
|
|
AREA Block, CODE, READONLY ; name this block of code
|
|
;void vp9_copy_mem8x4_v6( unsigned char *src, int src_stride, unsigned char *dst, int dst_stride)
|
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
|vp9_copy_mem8x4_v6| PROC
|
|
;push {r4-r5}
|
|
stmdb sp!, {r4-r5}
|
|
|
|
;preload
|
|
pld [r0]
|
|
pld [r0, r1]
|
|
pld [r0, r1, lsl #1]
|
|
|
|
ands r4, r0, #7
|
|
beq copy_mem8x4_fast
|
|
|
|
ands r4, r0, #3
|
|
beq copy_mem8x4_4
|
|
|
|
;copy 1 byte each time
|
|
ldrb r4, [r0]
|
|
ldrb r5, [r0, #1]
|
|
|
|
mov r12, #4
|
|
|
|
copy_mem8x4_1_loop
|
|
strb r4, [r2]
|
|
strb r5, [r2, #1]
|
|
|
|
ldrb r4, [r0, #2]
|
|
ldrb r5, [r0, #3]
|
|
|
|
subs r12, r12, #1
|
|
|
|
strb r4, [r2, #2]
|
|
strb r5, [r2, #3]
|
|
|
|
ldrb r4, [r0, #4]
|
|
ldrb r5, [r0, #5]
|
|
|
|
strb r4, [r2, #4]
|
|
strb r5, [r2, #5]
|
|
|
|
ldrb r4, [r0, #6]
|
|
ldrb r5, [r0, #7]
|
|
|
|
add r0, r0, r1
|
|
|
|
strb r4, [r2, #6]
|
|
strb r5, [r2, #7]
|
|
|
|
add r2, r2, r3
|
|
|
|
ldrneb r4, [r0]
|
|
ldrneb r5, [r0, #1]
|
|
|
|
bne copy_mem8x4_1_loop
|
|
|
|
ldmia sp!, {r4 - r5}
|
|
;pop {r4-r5}
|
|
mov pc, lr
|
|
|
|
;copy 4 bytes each time
|
|
copy_mem8x4_4
|
|
ldr r4, [r0]
|
|
ldr r5, [r0, #4]
|
|
|
|
mov r12, #4
|
|
|
|
copy_mem8x4_4_loop
|
|
subs r12, r12, #1
|
|
add r0, r0, r1
|
|
|
|
str r4, [r2]
|
|
str r5, [r2, #4]
|
|
|
|
add r2, r2, r3
|
|
|
|
ldrne r4, [r0]
|
|
ldrne r5, [r0, #4]
|
|
|
|
bne copy_mem8x4_4_loop
|
|
|
|
ldmia sp!, {r4-r5}
|
|
;pop {r4-r5}
|
|
mov pc, lr
|
|
|
|
;copy 8 bytes each time
|
|
copy_mem8x4_fast
|
|
;sub r1, r1, #8
|
|
;sub r3, r3, #8
|
|
|
|
mov r12, #4
|
|
|
|
copy_mem8x4_fast_loop
|
|
ldmia r0, {r4-r5}
|
|
;ldm r0, {r4-r5}
|
|
add r0, r0, r1
|
|
|
|
subs r12, r12, #1
|
|
stmia r2, {r4-r5}
|
|
;stm r2, {r4-r5}
|
|
add r2, r2, r3
|
|
|
|
bne copy_mem8x4_fast_loop
|
|
|
|
ldmia sp!, {r4-r5}
|
|
;pop {r4-r5}
|
|
mov pc, lr
|
|
|
|
ENDP ; |vp9_copy_mem8x4_v6|
|
|
|
|
END
|