xref: /aosp_15_r20/external/libxaac/decoder/armv7/ixheaacd_no_lap1.s (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
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_neg_shift_spec_armv7
25
26ixheaacd_neg_shift_spec_armv7:
27    STMFD           sp!, {R4-R12, R14}
28    VPUSH           {D8 - D15}
29    MOV             R5, #448
30    SUB             R6, R5, #1
31    MOV             R6, R6, LSL #2
32    ADD             R6, R6, R0
33    MOV             R8, #-16
34    SUB             R6, R6, #12
35    MOV             R7, R3, LSL #2
36    VDUP.32         Q1, R2
37    VLD1.32         {D0, D1}, [R6], R8
38    VQNEG.S32       Q0, Q0
39
40
41    VLD1.32         {D6, D7}, [R6], R8
42    VQSHL.S32       Q15, Q0, Q1
43    VMOV            Q13, Q15
44    SUB             R5, R5, #8
45
46    VQNEG.S32       Q3, Q3
47    VREV64.32       Q13,Q13
48
49LOOP_1:
50
51   VST1.32         {D27[0]},[R1], R7
52   VQSHL.S32       Q12, Q3, Q1
53   VLD1.32         {D0, D1}, [R6], R8
54   VST1.32         {D27[1]}, [R1], R7
55   VST1.32         {D26[0]}, [R1], R7
56   VQNEG.S32       Q0, Q0
57   VST1.32         {D26[1]}, [R1], R7
58   VMOV            Q10 , Q12
59   SUBS            R5, R5, #8
60
61
62   VREV64.32       Q10,Q10
63   VQSHL.S32       Q15, Q0, Q1
64   VST1.32         {D21[0]},[R1], R7
65   VLD1.32         {D6, D7}, [R6],R8
66   VST1.32         {D21[1]}, [R1],R7
67   VMOV            Q13,Q15
68   VST1.32         {D20[0]}, [R1],R7
69   VST1.32         {D20[1]}, [R1],R7
70
71   VREV64.32       Q13,Q13
72   VQNEG.S32       Q3, Q3
73
74   BGT             LOOP_1
75
76   VST1.32         {D27[0]},[R1],R7
77   VQSHL.S32       Q12, Q3, Q1
78   VST1.32         {D27[1]}, [R1],R7
79   VST1.32         {D26[0]}, [R1],R7
80   VST1.32         {D26[1]}, [R1],R7
81   VMOV             Q10, Q12
82
83   VREV64.32       Q10,Q10
84   VST1.32         {D21[0]}, [R1], R7
85   VST1.32         {D21[1]}, [R1], R7
86   VST1.32         {D20[0]}, [R1], R7
87   VST1.32         {D20[1]}, [R1], R7
88   VPOP            {D8 - D15}
89   LDMFD           sp!, {R4-R12, R15}
90.end
91
92