OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / frameworks / base / media / libstagefright / codecs / mp3dec / src / asm / pvmp3_dct_9_gcc.s
1 @ ------------------------------------------------------------------
2 @ Copyright (C) 1998-2009 PacketVideo
3 @
4 @ Licensed under the Apache License, Version 2.0 (the "License");
5 @ you may not use this file except in compliance with the License.
6 @ You may obtain a copy of the License at
7 @
8 @      http://www.apache.org/licenses/LICENSE-2.0
9 @
10 @ Unless required by applicable law or agreed to in writing, software
11 @ distributed under the License is distributed on an "AS IS" BASIS,
12 @ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13 @ express or implied.
14 @ See the License for the specific language governing permissions
15 @ and limitations under the License.
16 @ -------------------------------------------------------------------
17
18 @
19 @
20 @   Filename: pvmp3_dct_9_gcc.s
21 @
22 @------------------------------------------------------------------------------
23 @ REVISION HISTORY
24 @
25 @
26 @ Who:                                   Date: MM/DD/YYYY
27 @ Description: 
28 @
29 @------------------------------------------------------------------------------
30
31 .arm
32
33 .align 4
34
35 .text
36
37
38 @------------------------------------------------------------------------------
39
40 .global pvmp3_dct_9
41
42 pvmp3_dct_9:
43         stmfd    sp!,{r4-r11,lr}
44         ldr      r2, [r0, #0x20]
45         ldr      r3, [r0, #0]
46         ldr      r12,[r0, #4]
47         add      r1,r2,r3
48         sub      lr,r2,r3
49         ldr      r3,[r0, #0x1c]
50         ldr      r4,[r0, #0x18]
51         add      r2,r3,r12
52         ldr      r5,[r0,#8]
53         sub      r3,r3,r12
54         add      r12,r4,r5
55         sub      r4,r4,r5
56         ldr      r5,[r0, #0x14]
57         ldr      r7,[r0, #0xc]
58         ldr      r9,[r0, #0x10]
59         add      r6,r5,r7
60         sub      r5,r5,r7
61         add      r7,r1,r12
62         add      r8,r9,r2
63         add      r7,r7,r6
64         add      r10,r7,r8
65         rsb      r7,r8,r7,asr #1
66         str      r7,[r0, #0x18]
67         rsb      r2,r9,r2,asr #1
68         str      r10,[r0,#0]
69         ldr      r11,cos_2pi_9
70         rsb      r7,r2,#0
71
72         ldr      r10,cos_4pi_9
73         mov      r9,r1,lsl #1
74         mov      r8,r7
75
76 @    vec[4]  = fxp_mac32_Q32( vec[4], tmp0<<1, cos_2pi_9)@ 
77
78         smlal    r1,r8,r11,r9
79         ldr      r11,cos_pi_9
80                 mov      r1,r9                  @@@@@@  !!!!!!
81
82 @    vec[8]  = fxp_mac32_Q32( vec[8], tmp0<<1, cos_4pi_9)@
83
84         smlal    r1,r7,r10,r9
85
86         mov      r1,r12,lsl #1
87
88
89 @    vec[2]  = fxp_mac32_Q32( vec[2], tmp0<<1, cos_pi_9)@
90
91         smlal    r9,r2,r11,r9
92         rsb      r9,r10,#0
93         ldr      r11,cos_5pi_9
94
95         smlal    r12,r2,r9,r1
96
97
98
99 @    vec[2]  = fxp_mac32_Q32( vec[2], tmp2<<1, cos_5pi_9)@
100
101         ldr      r9,cos_2pi_9
102         mov      r12,r1                 @@@@@@  !!!!!!
103         smlal    r12,r8,r11,r1
104
105
106 @    vec[8]  = fxp_mac32_Q32( vec[8], tmp2<<1, cos_2pi_9)@
107
108         smlal    r1,r7,r9,r1
109         mov      r1,r6,lsl #1
110         smlal    r12,r7,r11,r1
111         and      r6,r10,r11,asr #14
112         smlal    r12,r8,r6,r1
113         ldr      r10,cos_11pi_18
114         add      r12,r11,r6
115         smlal    r1,r2,r12,r1
116         ldr      r9,cos_8pi_9
117         str      r2,[r0,#8]
118         mov      r1,r5,lsl #1
119
120 @    vec[8]  = fxp_mac32_Q32( vec[8], tmp3<<1, cos_8pi_9)@
121
122         smull    r2,r6,r9,r1
123         str      r7,[r0,#0x20]
124         mov      r2,r4,lsl #1
125         ldr      r7,cos_13pi_18
126         smlal    r12,r6,r10,r2
127
128         mov      r3,r3,lsl #1
129
130 @    vec[5]  = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18)@
131
132         smlal    r12,r6,r7,r3
133         add      r4,r5,r4
134         mov      r12,lr,lsl #1
135         sub      lr,r4,lr
136         ldr      r7,cos_17pi_18
137         str      r8,[r0, #0x10]
138         ldr      r4,cos_pi_6
139
140         mov      lr,lr,lsl #1
141
142 @    vec[1]  = fxp_mac32_Q32( vec[1], tmp8<<1, cos_17pi_18)@
143
144         smlal    r8,r6,r7,r12
145
146 @    vec[3]  = fxp_mul32_Q32((tmp5 + tmp6  - tmp8)<<1, cos_pi_6)@
147
148         smull    r5,lr,r4,lr
149         str      r6,[r0, #4]
150         str      lr,[r0, #0xc]
151
152
153 @    vec[5]  = fxp_mul32_Q32(tmp5<<1, cos_17pi_18)@
154         smull    r5,lr,r7,r1
155         rsb      r6,r9,#0
156 @    vec[5]  = fxp_mac32_Q32( vec[5], tmp6<<1,  cos_7pi_18)@
157         smlal    r5,lr,r6,r2
158 @    vec[5]  = fxp_mac32_Q32( vec[5], tmp7<<1,    cos_pi_6)@
159         smlal    r5,lr,r4,r3
160 @    vec[5]  = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18)@
161         smlal    r5,lr,r10,r12
162         str      lr,[r0, #0x14]
163         rsb      lr,r10,#0
164
165 @    vec[7]  = fxp_mul32_Q32(tmp5<<1, cos_5pi_18)@
166         smull    r5,r1,lr,r1
167 @    vec[7]  = fxp_mac32_Q32( vec[7], tmp6<<1, cos_17pi_18)@
168         smlal    r2,r1,r7,r2
169 @    vec[7]  = fxp_mac32_Q32( vec[7], tmp7<<1,    cos_pi_6)@
170         smlal    r3,r1,r4,r3
171 @    vec[7]  = fxp_mac32_Q32( vec[7], tmp8<<1, cos_11pi_18)@
172         smlal    r12,r1,r9,r12
173         str      r1,[r0, #0x1c]
174         ldmfd    sp!,{r4-r11,pc}
175 cos_2pi_9:
176         .word      0x620dbe80
177 cos_4pi_9:
178         .word      0x163a1a80
179 cos_pi_9:
180         .word      0x7847d900
181 cos_5pi_9:
182         .word      0x87b82700
183 cos_8pi_9:
184         .word      0xd438af00
185 cos_11pi_18:
186         .word      0xadb92280
187 cos_13pi_18:
188         .word      0x91261480
189 cos_17pi_18:
190         .word      0x81f1d200
191 cos_pi_6:
192         .word      0x6ed9eb80
193