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.s
21;
22;------------------------------------------------------------------------------
23; REVISION HISTORY
24;
25;
26; Who:                                   Date: MM/DD/YYYY
27; Description:
28;
29;------------------------------------------------------------------------------
30
31  AREA  |.drectve|, DRECTVE
32
33    DCB "-defaultlib:coredll.lib "
34    DCB "-defaultlib:corelibc.lib "
35
36  IMPORT pvmp3_mdct_18 ; pvmp3_mdct_18.cpp
37
38;------------------------------------------------------------------------------
39
40  AREA  |.rdata|, DATA, READONLY
41  % 4
42
43
44;------------------------------------------------------------------------------
45
46  AREA  |.text|, CODE, READONLY
47
48
49;------------------------------------------------------------------------------
50
51 EXPORT |pvmp3_dct_9|
52
53|pvmp3_dct_9| PROC
54        stmfd    sp!,{r4-r10,lr}
55        ldr      r2, [r0, #0x20]
56        ldr      r3, [r0]
57        ldr      r12,[r0, #4]
58        add      r1,r2,r3
59        sub      lr,r2,r3
60        ldr      r3,[r0, #0x1c]
61        ldr      r4,[r0, #0x18]
62        add      r2,r3,r12
63        ldr      r5,[r0,#8]
64        sub      r3,r3,r12
65        add      r12,r4,r5
66        sub      r4,r4,r5
67        ldr      r5,[r0, #0x14]
68        ldr      r7,[r0, #0xc]
69        ldr      r9,[r0, #0x10]
70        add      r6,r5,r7
71        sub      r5,r5,r7
72        add      r7,r1,r12
73        add      r8,r9,r2
74        add      r7,r7,r6
75        add      r10,r7,r8
76        rsb      r7,r8,r7,asr #1
77        str      r7,[r0, #0x18]
78        rsb      r2,r9,r2,asr #1
79        str      r10,[r0]
80        ldr      r11,|cos_2pi_9|
81        rsb      r7,r2,#0
82
83        mov      r9,r1,lsl #1
84		mov      r1,r9			;;;;;;  !!!!!!
85        mov      r8,r7
86
87;    vec[4]  = fxp_mac32_Q32( vec[4], tmp0<<1, cos_2pi_9);
88
89        smlal    r1,r8,r11,r9
90        ldr      r10,|cos_4pi_9|
91        ldr      r11,|cos_pi_9|
92
93;    vec[8]  = fxp_mac32_Q32( vec[8], tmp0<<1, cos_4pi_9);
94
95        smlal    r1,r7,r10,r9
96
97
98
99;    vec[2]  = fxp_mac32_Q32( vec[2], tmp0<<1, cos_pi_9);
100
101        smlal    r9,r2,r11,r9
102        mov      r1,r12,lsl #1
103        rsb      r9,r10,#0
104        ldr      r11,|cos_5pi_9|
105
106        smlal    r12,r2,r9,r1
107
108
109
110;    vec[2]  = fxp_mac32_Q32( vec[2], tmp2<<1, cos_5pi_9);
111
112        ldr      r9,|cos_2pi_9|
113        mov      r12,r1			;;;;;;  !!!!!!
114        smlal    r12,r8,r11,r1
115
116
117;    vec[8]  = fxp_mac32_Q32( vec[8], tmp2<<1, cos_2pi_9);
118
119        smlal    r1,r7,r9,r1
120        mov      r1,r6,lsl #1
121        smlal    r12,r7,r11,r1
122        and      r6,r10,r11,asr #14
123        smlal    r12,r8,r6,r1
124        ldr      r10,|cos_11pi_18|
125        add      r12,r11,r6
126        smlal    r1,r2,r12,r1
127        ldr      r9,|cos_8pi_9|
128        str      r2,[r0,#8]
129        mov      r1,r5,lsl #1
130
131;    vec[8]  = fxp_mac32_Q32( vec[8], tmp3<<1, cos_8pi_9);
132
133        smull    r2,r6,r9,r1
134        str      r7,[r0,#0x20]
135        mov      r2,r4,lsl #1
136        ldr      r7,|cos_13pi_18|
137        smlal    r12,r6,r10,r2
138
139        mov      r3,r3,lsl #1
140
141;    vec[5]  = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18);
142
143        smlal    r12,r6,r7,r3
144        add      r4,r5,r4
145        mov      r12,lr,lsl #1
146        sub      lr,r4,lr
147        ldr      r7,|cos_17pi_18|
148        str      r8,[r0, #0x10]
149        ldr      r4,|cos_pi_6|
150
151        mov      lr,lr,lsl #1
152
153;    vec[1]  = fxp_mac32_Q32( vec[1], tmp8<<1, cos_17pi_18);
154
155        smlal    r8,r6,r7,r12
156
157;    vec[3]  = fxp_mul32_Q32((tmp5 + tmp6  - tmp8)<<1, cos_pi_6);
158
159        smull    r5,lr,r4,lr
160        str      r6,[r0, #4]
161        str      lr,[r0, #0xc]
162
163
164;    vec[5]  = fxp_mul32_Q32(tmp5<<1, cos_17pi_18);
165        smull    r5,lr,r7,r1
166        rsb      r6,r9,#0
167;    vec[5]  = fxp_mac32_Q32( vec[5], tmp6<<1,  cos_7pi_18);
168        smlal    r5,lr,r6,r2
169;    vec[5]  = fxp_mac32_Q32( vec[5], tmp7<<1,    cos_pi_6);
170        smlal    r5,lr,r4,r3
171;    vec[5]  = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18);
172        smlal    r5,lr,r10,r12
173        str      lr,[r0, #0x14]
174        rsb      lr,r10,#0
175
176;    vec[7]  = fxp_mul32_Q32(tmp5<<1, cos_5pi_18);
177        smull    r5,r1,lr,r1
178;    vec[7]  = fxp_mac32_Q32( vec[7], tmp6<<1, cos_17pi_18);
179        smlal    r2,r1,r7,r2
180;    vec[7]  = fxp_mac32_Q32( vec[7], tmp7<<1,    cos_pi_6);
181        smlal    r3,r1,r4,r3
182;    vec[7]  = fxp_mac32_Q32( vec[7], tmp8<<1, cos_11pi_18);
183        smlal    r12,r1,r9,r12
184        str      r1,[r0, #0x1c]
185        ldmfd    sp!,{r4-r10,pc}
186|cos_2pi_9|
187        DCD      0x620dbe80
188|cos_4pi_9|
189        DCD      0x163a1a80
190|cos_pi_9|
191        DCD      0x7847d900
192|cos_5pi_9|
193        DCD      0x87b82700
194|cos_8pi_9|
195        DCD      0xd438af00
196|cos_11pi_18|
197        DCD      0xadb92280
198|cos_13pi_18|
199        DCD      0x91261480
200|cos_17pi_18|
201        DCD      0x81f1d200
202|cos_pi_6|
203        DCD      0x6ed9eb80
204        ENDP
205
206
207
208
209
210        END
211