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
42pvmp3_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}
175cos_2pi_9:
176        .word      0x620dbe80
177cos_4pi_9:
178        .word      0x163a1a80
179cos_pi_9:
180        .word      0x7847d900
181cos_5pi_9:
182        .word      0x87b82700
183cos_8pi_9:
184        .word      0xd438af00
185cos_11pi_18:
186        .word      0xadb92280
187cos_13pi_18:
188        .word      0x91261480
189cos_17pi_18:
190        .word      0x81f1d200
191cos_pi_6:
192        .word      0x6ed9eb80
193
194