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.
148 lines
3.4 KiB
148 lines
3.4 KiB
@/******************************************************************************
|
|
@ *
|
|
@ * Copyright (C) 2018 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.
|
|
@ *
|
|
@ *****************************************************************************
|
|
@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
|
|
@*/
|
|
|
|
|
|
.text
|
|
.p2align 2
|
|
.global ixheaacd_scale_factor_process_armv7
|
|
|
|
ixheaacd_scale_factor_process_armv7:
|
|
|
|
|
|
|
|
|
|
STMFD sp!, {r4-r12, r14}
|
|
LDR r9, [sp, #0x28]
|
|
LDR r11, [sp, #0x2c]
|
|
|
|
CMP r2, #0
|
|
|
|
BLE END
|
|
MOV r10, #0
|
|
CMP r11, #2
|
|
MOVLE r11, #0x25
|
|
MOVGT r11, #0x22
|
|
|
|
TBANDS_LOOP:
|
|
|
|
LDRSH r5, [r1], #2
|
|
LDRB r4, [r3], #1
|
|
|
|
LDR r6, [sp, #0x30]
|
|
LDR r7, [sp, #0x34]
|
|
|
|
CMP r5, #0x18
|
|
BGE SCALE_FACTOR_GE_12
|
|
|
|
CMP r4, #0
|
|
BLE OFFSET_ZERO
|
|
|
|
SCALE_FACTOR_LT_12:
|
|
|
|
STR r10, [r0], #4
|
|
STR r10, [r0], #4
|
|
STR r10, [r0], #4
|
|
STR r10, [r0], #4
|
|
SUBS r4, r4, #4
|
|
BGT SCALE_FACTOR_LT_12
|
|
B OFFSET_ZERO
|
|
|
|
SCALE_FACTOR_GE_12:
|
|
|
|
SUBS r6, r11, r5, ASR #2
|
|
|
|
|
|
AND r5, r5, #3
|
|
|
|
|
|
LDR r5, [r9, r5, LSL #2]
|
|
|
|
BLE SHIFT_LE_ZERO
|
|
|
|
SUB r14, r6, #1
|
|
|
|
SHIFT_POSITIVE:
|
|
LDRD r6, [r0, #0]
|
|
|
|
SMULWB r6, r6, r5
|
|
SMULWB r7, r7, r5
|
|
|
|
MOV r6, r6, ASR r14
|
|
MOV r7, r7, ASR r14
|
|
|
|
STRD r6, [r0], #8
|
|
|
|
LDRD r6, [r0, #0]
|
|
|
|
SMULWB r6, r6, r5
|
|
SMULWB r7, r7, r5
|
|
SUBS r4, r4, #4
|
|
|
|
MOV r6, r6, ASR r14
|
|
MOV r7, r7, ASR r14
|
|
|
|
STRD r6, [r0], #8
|
|
|
|
BGT SHIFT_POSITIVE
|
|
B OFFSET_ZERO
|
|
SHIFT_LE_ZERO:
|
|
|
|
RSBS r14, r6, #0
|
|
BGT SHIFT_NEGTIVE1
|
|
|
|
SHIFT_ZERO:
|
|
LDRD r6, [r0, #0]
|
|
|
|
SMULWB r6, r6, r5
|
|
SMULWB r7, r7, r5
|
|
MOV r6, r6, LSL #1
|
|
MOV r7, r7, LSL #1
|
|
|
|
STRD r6, [r0], #8
|
|
|
|
SUBS r4, r4, #2
|
|
|
|
BGT SHIFT_ZERO
|
|
B OFFSET_ZERO
|
|
|
|
SHIFT_NEGTIVE1:
|
|
SUB r14, r14, #1
|
|
SHIFT_NEGTIVE:
|
|
LDRD r6, [r0, #0]
|
|
MOV r6, r6, LSL r14
|
|
MOV r7, r7, LSL r14
|
|
|
|
SMULWB r6, r6, r5
|
|
SMULWB r7, r7, r5
|
|
MOV r6, r6, LSL #2
|
|
MOV r7, r7, LSL #2
|
|
|
|
STRD r6, [r0], #8
|
|
|
|
SUBS r4, r4, #2
|
|
|
|
BGT SHIFT_NEGTIVE
|
|
|
|
OFFSET_ZERO:
|
|
SUBS r2, r2, #1
|
|
BGT TBANDS_LOOP
|
|
END:
|
|
LDMFD sp!, {r4-r12, r15}
|