blob: 5bfac9229a8743d5ff4d980dd44e5612898ac602 [file] [log] [blame]
;
; Copyright (C) 2009 The Android Open Source Project
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
;
; http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
;
REQUIRE8
PRESERVE8
AREA |.text|, CODE
EXPORT h264bsdFillRow7
; Input / output registers
ref RN 0
fill RN 1
left RN 2
tmp2 RN 2
center RN 3
right RN 4
tmp1 RN 5
; -- NEON registers --
qTmp0 QN Q0.U8
qTmp1 QN Q1.U8
dTmp0 DN D0.U8
dTmp1 DN D1.U8
dTmp2 DN D2.U8
dTmp3 DN D3.U8
;/*------------------------------------------------------------------------------
;
; Function: h264bsdFillRow7
;
; Functional description:
;
; Inputs:
;
; Outputs:
;
; Returns:
;
;------------------------------------------------------------------------------*/
h264bsdFillRow7
PUSH {r4-r6,lr}
CMP left, #0
LDR right, [sp,#0x10]
BEQ switch_center
LDRB tmp1, [ref,#0]
loop_left
SUBS left, left, #1
STRB tmp1, [fill], #1
BNE loop_left
switch_center
ASR tmp2,center,#2
CMP tmp2,#9
ADDCC pc,pc,tmp2,LSL #2
B loop_center
B loop_center
B case_1
B case_2
B case_3
B case_4
B case_5
B case_6
B case_7
B case_8
;case_8
; LDR tmp2, [ref], #4
; SUB center, center, #4
; STR tmp2, [fill], #4
;case_7
; LDR tmp2, [ref], #4
; SUB center, center, #4
; STR tmp2, [fill], #4
;case_6
; LDR tmp2, [ref], #4
; SUB center, center, #4
; STR tmp2, [fill],#4
;case_5
; LDR tmp2, [ref], #4
; SUB center, center, #4
; STR tmp2, [fill],#4
;case_4
; LDR tmp2, [ref],#4
; SUB center, center, #4
; STR tmp2, [fill], #4
;case_3
; LDR tmp2, [ref],#4
; SUB center, center, #4
; STR tmp2, [fill], #4
;case_2
; LDR tmp2, [ref],#4
; SUB center, center, #4
; STR tmp2, [fill], #4
;case_1
; LDR tmp2, [ref],#4
; SUB center, center, #4
; STR tmp2, [fill], #4
case_8
VLD1 {qTmp0, qTmp1}, [ref]!
SUB center, center, #32
VST1 qTmp0, [fill]!
VST1 qTmp1, [fill]!
B loop_center
case_7
VLD1 {dTmp0,dTmp1,dTmp2}, [ref]!
SUB center, center, #28
LDR tmp2, [ref], #4
VST1 {dTmp0,dTmp1,dTmp2}, [fill]!
STR tmp2, [fill],#4
B loop_center
case_6
VLD1 {dTmp0,dTmp1,dTmp2}, [ref]!
SUB center, center, #24
VST1 {dTmp0,dTmp1,dTmp2}, [fill]!
B loop_center
case_5
VLD1 qTmp0, [ref]!
SUB center, center, #20
LDR tmp2, [ref], #4
VST1 qTmp0, [fill]!
STR tmp2, [fill],#4
B loop_center
case_4
VLD1 qTmp0, [ref]!
SUB center, center, #16
VST1 qTmp0, [fill]!
B loop_center
case_3
VLD1 dTmp0, [ref]!
SUB center, center, #12
LDR tmp2, [ref], #4
VST1 dTmp0, [fill]!
STR tmp2, [fill],#4
B loop_center
case_2
LDR tmp2, [ref],#4
SUB center, center, #4
STR tmp2, [fill], #4
case_1
LDR tmp2, [ref],#4
SUB center, center, #4
STR tmp2, [fill], #4
loop_center
CMP center, #0
LDRBNE tmp2, [ref], #1
SUBNE center, center, #1
STRBNE tmp2, [fill], #1
BNE loop_center
CMP right,#0
POPEQ {r4-r6,pc}
LDRB tmp2, [ref,#-1]
loop_right
STRB tmp2, [fill], #1
SUBS right, right, #1
BNE loop_right
POP {r4-r6,pc}
END