You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
230 lines
6.1 KiB
230 lines
6.1 KiB
@/******************************************************************************
|
|
@ *
|
|
@ * 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}
|
|
|