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