• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #1
36    VDUP.32         Q1, R2
37    MOV             R4, #0x8000
38    VDUP.32         Q2, R4
39
40    VLD1.32         {D0, D1}, [R6], R8
41    VQNEG.S32       Q0, Q0
42
43
44    VLD1.32         {D6, D7}, [R6], R8
45    VQSHL.S32       Q15, Q0, Q1
46    VQADD.S32       Q14, Q15, Q2
47    VSHR.S32        Q13, Q14, #16
48    VREV64.32       Q13, Q13
49    SUB             R5, R5, #8
50
51    VUZP.16         D27, D26
52    VQNEG.S32       Q3, Q3
53
54
55LOOP_1:
56
57
58    VST1.16         D27[0], [R1], R7
59    VQSHL.S32       Q12, Q3, Q1
60    VLD1.32         {D0, D1}, [R6], R8
61    VST1.16         D27[1], [R1], R7
62    VQADD.S32       Q11, Q12, Q2
63    VST1.16         D27[2], [R1], R7
64    VQNEG.S32       Q0, Q0
65    VST1.16         D27[3], [R1], R7
66    VSHR.S32        Q10, Q11, #16
67    VREV64.32       Q10, Q10
68    SUBS            R5, R5, #8
69
70
71    VUZP.16         D21, D20
72    VQSHL.S32       Q15, Q0, Q1
73    VST1.16         D21[0], [R1], R7
74    VLD1.32         {D6, D7}, [R6], R8
75    VQADD.S32       Q14, Q15, Q2
76    VST1.16         D21[1], [R1], R7
77    VSHR.S32        Q13, Q14, #16
78    VST1.16         D21[2], [R1], R7
79    VREV64.32       Q13, Q13
80    VST1.16         D21[3], [R1], R7
81
82
83    VUZP.16         D27, D26
84    VQNEG.S32       Q3, Q3
85
86
87
88    BGT             LOOP_1
89
90    VST1.16         D27[0], [R1], R7
91    VQSHL.S32       Q12, Q3, Q1
92    VST1.16         D27[1], [R1], R7
93    VST1.16         D27[2], [R1], R7
94    VQADD.S32       Q11, Q12, Q2
95    VST1.16         D27[3], [R1], R7
96    VSHR.S32        Q10, Q11, #16
97
98
99    VREV64.32       Q10, Q10
100
101    VUZP.16         D21, D20
102
103    VST1.16         D21[0], [R1], R7
104    VST1.16         D21[1], [R1], R7
105    VST1.16         D21[2], [R1], R7
106    VST1.16         D21[3], [R1], R7
107    VPOP            {D8 - D15}
108    LDMFD           sp!, {R4-R12, R15}
109.end
110
111