1@/****************************************************************************** 2@ * 3@ * Copyright (C) 2018 The Android Open Source Project 4@ * 5@ * Licensed under the Apache License, Version 2.0 (the "License"); 6@ * you may not use this file except in compliance with the License. 7@ * You may obtain a copy of the License at: 8@ * 9@ * http://www.apache.org/licenses/LICENSE-2.0 10@ * 11@ * Unless required by applicable law or agreed to in writing, software 12@ * distributed under the License is distributed on an "AS IS" BASIS, 13@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14@ * See the License for the specific language governing permissions and 15@ * limitations under the License. 16@ * 17@ ***************************************************************************** 18@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19@*/ 20 21 22.text 23.p2align 2 24.global ixheaacd_expsubbandsamples_armv7 25ixheaacd_expsubbandsamples_armv7: 26 27 STMFD sp!, {r4-r12} 28 29 LDR r7, [sp, #0x24] 30 LDR r10, [sp, #0x28] 31 SUB r11, r3, r2 32 MOV r12, #1 33 CMP r7, r10 34 BGE EXIT 35 36 MOVS r3, r11 37 BEQ EXIT 38 39 40 LDR r4, [sp, #0x2c] 41 CMP r4, #0 42 BEQ HQ_OUTER_LOOP 43 44 45 46 SUB r10, r10, r7 47 ADD r0, r0, r7, LSL #2 48 LDR r1, [r0], #4 49 50OUTERLOOP: 51 MOV r3, r11 52 ADD r5, r1, r2, LSL #2 53INLOOP: 54 55 LDR r4, [r5], #4 56 SUBS r3, r3, #2 57 LDRGE r8, [r5], #4 58 EOR r1 , r4 , r4, asr #31 59 ORR r12, r12, r1 60 EORGE r1 , r8 , r8, asr #31 61 ORRGE r12, r12, r1 62 BGT INLOOP 63 64 SUBS r10, r10, #1 65 LDR r1, [r0], #4 66 BGT OUTERLOOP 67 68 69 70 B EXIT 71 72 73HQ_OUTER_LOOP: 74 LDR r6, [r0, r7, LSL #2] 75 LDR r5, [r1, r7, LSL #2] 76 ADD r6, r6, r2, LSL #2 77 ADD r5, r5, r2, LSL #2 78 MOV r4, r11 79 80HQ_IN_LOOP: 81 LDR r8, [r6], #4 82 LDR r9, [r5], #4 83 SUBS r4, r4, #2 84 85 EOR r3 , r8 , r8, asr #31 86 ORR r12, r12, r3 87 88 EOR r3 , r9 , r9, asr #31 89 ORR r12, r12, r3 90 91 LDRGE r8, [r6], #4 92 LDRGE r9, [r5], #4 93 94 EORGE r3 , r8 , r8, asr #31 95 ORRGE r12, r12, r3 96 97 EORGE r3 , r9 , r9, asr #31 98 ORRGE r12, r12, r3 99 100 BGT HQ_IN_LOOP 101 102INLOEN: 103 ADD r7, r7, #1 104 CMP r7, r10 105 BLT HQ_OUTER_LOOP 106 107EXIT: 108 109 CLZ r0, r12 110 SUB r0, r0, #1 111 LDMFD sp!, {r4-r12} 112 BX lr 113 114