| @/****************************************************************************** |
| @ * |
| @ * 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_harm_idx_zerotwolp_armv7 |
| ixheaacd_harm_idx_zerotwolp_armv7: |
| STMFD sp!, {r4-r12} |
| SUB r5, r2, #1 |
| MOV r2, #-1 |
| LDR r6, [sp, #52] |
| LDR r12, [sp, #48] |
| ADD r10, sp, #36 |
| LDR r4, [sp, #44] |
| LDMIA r10, {r9, r10} |
| CMP r4, #0 |
| BLE EXIT |
| CMP r12, #0 |
| BNE NO_NOISE |
| |
| |
| |
| LOOP1: |
| LDR r12, [r0, #0] |
| LDRSH r7, [r1], #2 |
| LDRSH r8, [r1], #2 |
| |
| ADD r2, r2, #1 |
| SMULWB r7, r12, r7 |
| SUBS r8, r8, r5 |
| |
| LDRH r12, [r3], #4 |
| RSBLE r8, r8, #0 |
| MOVLE r8, r7, ASR r8 |
| MOVGT r8, r7, LSL r8 |
| |
| MOVS r12, r12, LSL #16 |
| BEQ NEXT |
| |
| CMP r6, #0 |
| QADDEQ r8, r8, r12 |
| QSUBNE r8, r8, r12 |
| SUBS r4, r4, #1 |
| B STORE |
| |
| NEXT: |
| |
| |
| LDR r7, [r9, r2, LSL #2] |
| ADD r12, r10, r2, LSL #2 |
| LDRSH r12, [r12, #0] |
| SUBS r4, r4, #1 |
| SMULTB r7, r7, r12 |
| ADD r8, r8, r7, LSL #1 |
| |
| STORE: |
| STR r8, [r0], #4 |
| BGT LOOP1 |
| B EXIT |
| |
| |
| NO_NOISE: |
| |
| LOOP2: |
| LDR r12, [r0, #0] |
| LDRSH r7, [r1], #2 |
| LDRSH r9, [r1], #2 |
| LDRH r10, [r3], #4 |
| |
| SMULWB r7, r12, r7 |
| SUBS r9, r9, r5 |
| RSBMI r9, r9, #0 |
| |
| MOVMI r12, r7, ASR r9 |
| MOVPL r12, r7, LSL r9 |
| |
| MOV r7, r10, LSL #16 |
| |
| CMP r6, #0 |
| QADDEQ r12, r12, r7 |
| QSUBNE r12, r12, r7 |
| |
| SUBS r4, r4, #1 |
| STR r12, [r0], #4 |
| BGT LOOP2 |
| |
| EXIT: |
| LDMFD sp!, {r4-r12} |
| BX lr |
| |
| |