@/****************************************************************************** @ * @ * 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_apply_rot_armv7 ixheaacd_apply_rot_armv7: STMFD SP!, {R4-R12, R14} MOVW R5, #0x59e MOV R4, #22 ADD R11, R0, R5 LOOP1: LDRSH R5, [R11, #-98] LDRSH R6, [R11, #94] LDRSH R7, [R11, #-96] LDRSH R8, [R11, #96] ADD R9, R5, R6 STRH R9, [R11, #-98] ADD R10, R7, R8 STRH R10, [R11, #-96] LDRSH R5, [R11, #-2] LDRSH R6, [R11, #190] LDRSH R7, [R11] LDRSH R8, [R11, #192] ADD R9, R5, R6 STRH R9, [R11, #-2] ADD R10, R7, R8 STRH R10, [R11], #4 LDRSH R5, [R11, #-98] LDRSH R6, [R11, #94] LDRSH R7, [R11, #-96] LDRSH R8, [R11, #96] ADD R9, R5, R6 STRH R9, [R11, #-98] ADD R10, R7, R8 STRH R10, [R11, #-96] SUBS R4, R4, #2 LDRSH R5, [R11, #-2] LDRSH R6, [R11, #190] LDRSH R7, [R11] LDRSH R8, [R11, #192] ADD R9, R5, R6 STRH R9, [R11, #-2] ADD R10, R7, R8 STRH R10, [R11], #4 BGT LOOP1 MOVW R4, #0x53C LDR R12, [R0, #44] ADD R11, R0, R4 MOV R4, #10 LOOP2: LDR R5, [R12] LDR R7, [R11], #4 LDR R6, [R12, #0x80] LDR R8, [R11, #92] SMULWB R9, R5, R7 SMULWB R10, R6, R8 SMULWT R14, R5, R7 QADD R5, R9, R10 SMULWT R6, R6, R8 MOV R5, R5, LSL #2 QADD R14, R14, R6 STR R5, [R12], #4 MOV R14, R14, LSL #2 STR R14, [R12, #0x7c] LDR R5, [R12, #0x3c] LDR R6, [R12, #0xbc] SMULWB R9, R5, R7 SMULWB R10, R6, R8 SMULWT R14, R5, R7 QADD R5, R9, R10 SMULWT R6, R6, R8 MOV R5, R5, LSL #2 QADD R14, R14, R6 STR R5, [R12, #0x3c] MOV R14, R14, LSL #2 STR R14, [R12, #0xbc] SUBS R4, R4, #1 BGT LOOP2 MOVW R11, #0x6c2 MOVW R5, #0x564 LDRSH R14, [R0, R11] ADD R11, R0, R5 LDR R5, [SP, #44] SUB SP, SP, #512 MOV R12, SP LDR R6, [R5, #12] MOV R4, #12 ADD R6, R6, #0xb8 LOOP3: LDRSH R5, [R6], #2 LDRSH R7, [R6, #-4] LDR R10, [R11, #96] LDR R9, [R11], #4 CMP R14, R5 SUB R8, R14, R7 SUBGT R8, R5, R7 ADD R5, R12, R7, LSL #3 LOOP3INN1: STR R10, [R5, #4] STR R9, [R5], #8 SUBS R8, R8, #1 BGT LOOP3INN1 SUBS R4, R4, #1 BGT LOOP3 MOV R4, #3 LDR R12, [R0, #44] LDR R9, [SP, #48+512] LDR R0, [SP, #40+512] STR R14, [SP, #-4]! LOOP4: LDR R5, [R12], #4 LDR R6, [R12, #0x3c] LDR R7, [R12, #0x7c] LDRSH R10, [R9], #2 LDR R8, [R12, #0xbc] MOV R11, #5 CMP R10, #6 SUBLT R11, R10, #1 LOOP4INN1: LDR R10, [R12], #4 LDR R14, [R12, #0x3C] QADD R5, R5, R10 QADD R6, R6, R14 LDR R10, [R12, #0x7C] LDR R14, [R12, #0xBC] QADD R7, R7, R10 QADD R8, R8, R14 SUBS R11, R11, #1 BGT LOOP4INN1 STR R5, [R1], #4 STR R6, [R2], #4 STR R7, [R3], #4 STR R8, [R0], #4 SUBS R4, R4, #1 BGT LOOP4 LDR R14, [SP] ADD R11, SP, #28 SUB R4, R14, #3 LOOP5: LDR R5, [R1] LDR R7, [R11], #4 LDR R6, [R3] LDR R8, [R11], #4 SMULWB R9, R5, R7 SMULWB R10, R6, R8 SMULWT R14, R5, R7 QADD R5, R9, R10 SMULWT R6, R6, R8 MOV R5, R5, LSL #2 QADD R14, R14, R6 STR R5, [R1], #4 MOV R14, R14, LSL #2 STR R14, [R3], #4 SUBS R4, R4, #1 LDR R5, [R2] LDR R6, [R0] SMULWB R9, R5, R7 SMULWB R10, R6, R8 SMULWT R14, R5, R7 QADD R5, R9, R10 SMULWT R6, R6, R8 MOV R5, R5, LSL #2 QADD R14, R14, R6 STR R5, [R2], #4 MOV R14, R14, LSL #2 STR R14, [R0], #4 BGT LOOP5 ADD SP, SP, #516 LDMFD sp!, {r4-r12, r15}