blob: fec9a4ebabeb85d9c067a5966215207179277bae [file] [log] [blame]
@/******************************************************************************
@ *
@ * 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
.extern ixheaacd_cos_sin_mod
.hidden ixheaacd_cos_sin_mod
.global ixheaacd_fwd_modulation
ixheaacd_fwd_modulation:
STMFD sp!, {r3-r9, r12, lr}
MOV r5, r2
LDR r2, [sp, #0x24]
MOV lr, r1
MOV r4, r1
MOV r1, #0x1f
MOV r7, r5
ADD r8, r0, #0xfc
MOV r6, r3
LOOP1:
LDR r3, [r0], #4
LDR r12, [r8], #-4
MOV r3, r3, ASR #4
MOV r12, r12, ASR #4
QSUB r9, r3, r12
ADD r3, r3, r12
STR r9, [lr], #4
SUBS r1, r1, #1
STR r3, [r7], #4
BPL LOOP1
MOV r1, r6
MOV r0, r4
MOV r3, #0xd8
LSL r3, r3, #4
ADD r3, r3, #8
ADD r3, r2, r3
ADD r2, r3, #4
BL ixheaacd_cos_sin_mod
LDRSH r1, [r6, #0x2c]
LDRSH r2, [r6, #0x2a]
LDR r0, [r6, #0x18]
SUBS r2, r1, r2
@ LDMLEFD sp!, {r3-r9, r12, pc}
LDMFDLE sp!, {r3-r9, r12, pc}
LOOP2:
LDR r1, [r0], #4
LDR r12, [r5, #0]
LDR r3, [r4, #0]
SMULWT r6, r12, r1
SMULWB lr, r3, r1
SMULWB r12, r12, r1
SMULWT r1, r3, r1
ADD lr, lr, r6
QSUB r1, r12, r1
MOV r3, lr, LSL #1
MOV r1, r1, LSL #1
STR r3, [r4], #4
SUBS r2, r2, #1
STR r1, [r5], #4
BGT LOOP2
LDMFD sp!, {r3-r9, r12, pc}