xref: /aosp_15_r20/external/libxaac/decoder/armv7/ixheaacd_no_lap1.s (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
1*15dc779aSAndroid Build Coastguard Worker@/******************************************************************************
2*15dc779aSAndroid Build Coastguard Worker@ *
3*15dc779aSAndroid Build Coastguard Worker@ * Copyright (C) 2018 The Android Open Source Project
4*15dc779aSAndroid Build Coastguard Worker@ *
5*15dc779aSAndroid Build Coastguard Worker@ * Licensed under the Apache License, Version 2.0 (the "License");
6*15dc779aSAndroid Build Coastguard Worker@ * you may not use this file except in compliance with the License.
7*15dc779aSAndroid Build Coastguard Worker@ * You may obtain a copy of the License at:
8*15dc779aSAndroid Build Coastguard Worker@ *
9*15dc779aSAndroid Build Coastguard Worker@ * http://www.apache.org/licenses/LICENSE-2.0
10*15dc779aSAndroid Build Coastguard Worker@ *
11*15dc779aSAndroid Build Coastguard Worker@ * Unless required by applicable law or agreed to in writing, software
12*15dc779aSAndroid Build Coastguard Worker@ * distributed under the License is distributed on an "AS IS" BASIS,
13*15dc779aSAndroid Build Coastguard Worker@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*15dc779aSAndroid Build Coastguard Worker@ * See the License for the specific language governing permissions and
15*15dc779aSAndroid Build Coastguard Worker@ * limitations under the License.
16*15dc779aSAndroid Build Coastguard Worker@ *
17*15dc779aSAndroid Build Coastguard Worker@ *****************************************************************************
18*15dc779aSAndroid Build Coastguard Worker@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*15dc779aSAndroid Build Coastguard Worker@*/
20*15dc779aSAndroid Build Coastguard Worker
21*15dc779aSAndroid Build Coastguard Worker
22*15dc779aSAndroid Build Coastguard Worker.text
23*15dc779aSAndroid Build Coastguard Worker.p2align 2
24*15dc779aSAndroid Build Coastguard Worker    .global ixheaacd_neg_shift_spec_armv7
25*15dc779aSAndroid Build Coastguard Worker
26*15dc779aSAndroid Build Coastguard Workerixheaacd_neg_shift_spec_armv7:
27*15dc779aSAndroid Build Coastguard Worker    STMFD           sp!, {R4-R12, R14}
28*15dc779aSAndroid Build Coastguard Worker    VPUSH           {D8 - D15}
29*15dc779aSAndroid Build Coastguard Worker    MOV             R5, #448
30*15dc779aSAndroid Build Coastguard Worker    SUB             R6, R5, #1
31*15dc779aSAndroid Build Coastguard Worker    MOV             R6, R6, LSL #2
32*15dc779aSAndroid Build Coastguard Worker    ADD             R6, R6, R0
33*15dc779aSAndroid Build Coastguard Worker    MOV             R8, #-16
34*15dc779aSAndroid Build Coastguard Worker    SUB             R6, R6, #12
35*15dc779aSAndroid Build Coastguard Worker    MOV             R7, R3, LSL #2
36*15dc779aSAndroid Build Coastguard Worker    VDUP.32         Q1, R2
37*15dc779aSAndroid Build Coastguard Worker    VLD1.32         {D0, D1}, [R6], R8
38*15dc779aSAndroid Build Coastguard Worker    VQNEG.S32       Q0, Q0
39*15dc779aSAndroid Build Coastguard Worker
40*15dc779aSAndroid Build Coastguard Worker
41*15dc779aSAndroid Build Coastguard Worker    VLD1.32         {D6, D7}, [R6], R8
42*15dc779aSAndroid Build Coastguard Worker    VQSHL.S32       Q15, Q0, Q1
43*15dc779aSAndroid Build Coastguard Worker    VMOV            Q13, Q15
44*15dc779aSAndroid Build Coastguard Worker    SUB             R5, R5, #8
45*15dc779aSAndroid Build Coastguard Worker
46*15dc779aSAndroid Build Coastguard Worker    VQNEG.S32       Q3, Q3
47*15dc779aSAndroid Build Coastguard Worker    VREV64.32       Q13,Q13
48*15dc779aSAndroid Build Coastguard Worker
49*15dc779aSAndroid Build Coastguard WorkerLOOP_1:
50*15dc779aSAndroid Build Coastguard Worker
51*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D27[0]},[R1], R7
52*15dc779aSAndroid Build Coastguard Worker   VQSHL.S32       Q12, Q3, Q1
53*15dc779aSAndroid Build Coastguard Worker   VLD1.32         {D0, D1}, [R6], R8
54*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D27[1]}, [R1], R7
55*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D26[0]}, [R1], R7
56*15dc779aSAndroid Build Coastguard Worker   VQNEG.S32       Q0, Q0
57*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D26[1]}, [R1], R7
58*15dc779aSAndroid Build Coastguard Worker   VMOV            Q10 , Q12
59*15dc779aSAndroid Build Coastguard Worker   SUBS            R5, R5, #8
60*15dc779aSAndroid Build Coastguard Worker
61*15dc779aSAndroid Build Coastguard Worker
62*15dc779aSAndroid Build Coastguard Worker   VREV64.32       Q10,Q10
63*15dc779aSAndroid Build Coastguard Worker   VQSHL.S32       Q15, Q0, Q1
64*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D21[0]},[R1], R7
65*15dc779aSAndroid Build Coastguard Worker   VLD1.32         {D6, D7}, [R6],R8
66*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D21[1]}, [R1],R7
67*15dc779aSAndroid Build Coastguard Worker   VMOV            Q13,Q15
68*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D20[0]}, [R1],R7
69*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D20[1]}, [R1],R7
70*15dc779aSAndroid Build Coastguard Worker
71*15dc779aSAndroid Build Coastguard Worker   VREV64.32       Q13,Q13
72*15dc779aSAndroid Build Coastguard Worker   VQNEG.S32       Q3, Q3
73*15dc779aSAndroid Build Coastguard Worker
74*15dc779aSAndroid Build Coastguard Worker   BGT             LOOP_1
75*15dc779aSAndroid Build Coastguard Worker
76*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D27[0]},[R1],R7
77*15dc779aSAndroid Build Coastguard Worker   VQSHL.S32       Q12, Q3, Q1
78*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D27[1]}, [R1],R7
79*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D26[0]}, [R1],R7
80*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D26[1]}, [R1],R7
81*15dc779aSAndroid Build Coastguard Worker   VMOV             Q10, Q12
82*15dc779aSAndroid Build Coastguard Worker
83*15dc779aSAndroid Build Coastguard Worker   VREV64.32       Q10,Q10
84*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D21[0]}, [R1], R7
85*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D21[1]}, [R1], R7
86*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D20[0]}, [R1], R7
87*15dc779aSAndroid Build Coastguard Worker   VST1.32         {D20[1]}, [R1], R7
88*15dc779aSAndroid Build Coastguard Worker   VPOP            {D8 - D15}
89*15dc779aSAndroid Build Coastguard Worker   LDMFD           sp!, {R4-R12, R15}
90*15dc779aSAndroid Build Coastguard Worker.end
91*15dc779aSAndroid Build Coastguard Worker
92