@/****************************************************************************** @ * @ * 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}