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_gcc.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.arm
32d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
33d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber.align 4
34d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
35d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber.text
36d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
37d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
38d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@------------------------------------------------------------------------------
39d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
40d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber.global pvmp3_dct_9
41d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
42d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberpvmp3_dct_9:
43d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        stmfd    sp!,{r4-r11,lr}
44d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r2, [r0, #0x20]
45d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3, [r0, #0]
46d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r12,[r0, #4]
47d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r1,r2,r3
48d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      lr,r2,r3
49d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r3,[r0, #0x1c]
50d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r4,[r0, #0x18]
51d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r2,r3,r12
52d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r5,[r0,#8]
53d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      r3,r3,r12
54d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r12,r4,r5
55d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      r4,r4,r5
56d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r5,[r0, #0x14]
57d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r7,[r0, #0xc]
58d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r9,[r0, #0x10]
59d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r6,r5,r7
60d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      r5,r5,r7
61d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r7,r1,r12
62d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r8,r9,r2
63d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r7,r7,r6
64d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r10,r7,r8
65d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      r7,r8,r7,asr #1
66d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r7,[r0, #0x18]
67d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      r2,r9,r2,asr #1
68d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r10,[r0,#0]
69d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r11,cos_2pi_9
70d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      r7,r2,#0
71d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
72d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r10,cos_4pi_9
73d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r9,r1,lsl #1
74d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r8,r7
75d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
76d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[4]  = fxp_mac32_Q32( vec[4], tmp0<<1, cos_2pi_9)@
77d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
78d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r1,r8,r11,r9
79d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r11,cos_pi_9
80d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber		mov      r1,r9			@@@@@@  !!!!!!
81d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
82d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[8]  = fxp_mac32_Q32( vec[8], tmp0<<1, cos_4pi_9)@
83d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
84d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r1,r7,r10,r9
85d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
86d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r1,r12,lsl #1
87d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
88d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
89d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[2]  = fxp_mac32_Q32( vec[2], tmp0<<1, cos_pi_9)@
90d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
91d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r9,r2,r11,r9
92d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      r9,r10,#0
93d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r11,cos_5pi_9
94d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
95d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r12,r2,r9,r1
96d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
97d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
98d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
99d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[2]  = fxp_mac32_Q32( vec[2], tmp2<<1, cos_5pi_9)@
100d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
101d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r9,cos_2pi_9
102d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r12,r1			@@@@@@  !!!!!!
103d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r12,r8,r11,r1
104d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
105d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
106d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[8]  = fxp_mac32_Q32( vec[8], tmp2<<1, cos_2pi_9)@
107d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
108d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r1,r7,r9,r1
109d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r1,r6,lsl #1
110d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r12,r7,r11,r1
111d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        and      r6,r10,r11,asr #14
112d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r12,r8,r6,r1
113d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r10,cos_11pi_18
114d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r12,r11,r6
115d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r1,r2,r12,r1
116d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r9,cos_8pi_9
117d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r2,[r0,#8]
118d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r1,r5,lsl #1
119d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
120d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[8]  = fxp_mac32_Q32( vec[8], tmp3<<1, cos_8pi_9)@
121d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
122d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r2,r6,r9,r1
123d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r7,[r0,#0x20]
124d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r2,r4,lsl #1
125d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r7,cos_13pi_18
126d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r12,r6,r10,r2
127d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
128d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r3,r3,lsl #1
129d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
130d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[5]  = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18)@
131d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
132d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r12,r6,r7,r3
133d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        add      r4,r5,r4
134d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      r12,lr,lsl #1
135d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        sub      lr,r4,lr
136d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r7,cos_17pi_18
137d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r8,[r0, #0x10]
138d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldr      r4,cos_pi_6
139d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
140d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        mov      lr,lr,lsl #1
141d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
142d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[1]  = fxp_mac32_Q32( vec[1], tmp8<<1, cos_17pi_18)@
143d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
144d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r8,r6,r7,r12
145d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
146d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[3]  = fxp_mul32_Q32((tmp5 + tmp6  - tmp8)<<1, cos_pi_6)@
147d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
148d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r5,lr,r4,lr
149d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r6,[r0, #4]
150d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      lr,[r0, #0xc]
151d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
152d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
153d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[5]  = fxp_mul32_Q32(tmp5<<1, cos_17pi_18)@
154d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r5,lr,r7,r1
155d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      r6,r9,#0
156d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[5]  = fxp_mac32_Q32( vec[5], tmp6<<1,  cos_7pi_18)@
157d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r5,lr,r6,r2
158d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[5]  = fxp_mac32_Q32( vec[5], tmp7<<1,    cos_pi_6)@
159d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r5,lr,r4,r3
160d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[5]  = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18)@
161d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r5,lr,r10,r12
162d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      lr,[r0, #0x14]
163d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rsb      lr,r10,#0
164d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
165d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[7]  = fxp_mul32_Q32(tmp5<<1, cos_5pi_18)@
166d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smull    r5,r1,lr,r1
167d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[7]  = fxp_mac32_Q32( vec[7], tmp6<<1, cos_17pi_18)@
168d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r2,r1,r7,r2
169d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[7]  = fxp_mac32_Q32( vec[7], tmp7<<1,    cos_pi_6)@
170d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r3,r1,r4,r3
171d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber@    vec[7]  = fxp_mac32_Q32( vec[7], tmp8<<1, cos_11pi_18)@
172d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        smlal    r12,r1,r9,r12
173d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        str      r1,[r0, #0x1c]
174d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        ldmfd    sp!,{r4-r11,pc}
175d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_2pi_9:
176d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x620dbe80
177d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_4pi_9:
178d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x163a1a80
179d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_pi_9:
180d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x7847d900
181d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_5pi_9:
182d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x87b82700
183d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_8pi_9:
184d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0xd438af00
185d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_11pi_18:
186d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0xadb92280
187d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_13pi_18:
188d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x91261480
189d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_17pi_18:
190d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x81f1d200
191d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubercos_pi_6:
192d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        .word      0x6ed9eb80
193d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
194