xref: /aosp_15_r20/external/libxaac/decoder/armv7/ixheaacd_post_radix_compute4.s (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
1@/******************************************************************************
2@ *
3@ * Copyright (C) 2018 The Android Open Source Project
4@ *
5@ * Licensed under the Apache License, Version 2.0 (the "License");
6@ * you may not use this file except in compliance with the License.
7@ * You may obtain a copy of the License at:
8@ *
9@ * http://www.apache.org/licenses/LICENSE-2.0
10@ *
11@ * Unless required by applicable law or agreed to in writing, software
12@ * distributed under the License is distributed on an "AS IS" BASIS,
13@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14@ * See the License for the specific language governing permissions and
15@ * limitations under the License.
16@ *
17@ *****************************************************************************
18@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19@*/
20
21
22.text
23.p2align 2
24        .global ixheaacd_postradixcompute4
25        .type ixheaacd_postradixcompute4, %function
26
27
28ixheaacd_postradixcompute4:
29
30    STMFD           sp!, {r4-r12, r14}
31
32
33
34
35
36
37
38
39
40
41
42
43    ADD             r4, r1, r3, lsl #1
44    MOV             r3, #2
45
46
47POSTRADIX4_START:
48
49    LDMIA           r1!, {r5-r12}
50
51    ADD             r14, r5, r9
52    SUB             r5, r5, r9
53
54    ADD             r9, r6, r10
55    SUB             r6, r6, r10
56
57    ADD             r10, r7, r11
58    SUB             r7, r7, r11
59
60    ADD             r11, r8, r12
61    SUB             r8, r8, r12
62
63    ADD             r12, r14, r10
64    SUB             r14, r14, r10
65
66    ADD             r10, r9, r11
67    SUB             r9, r9, r11
68
69    ADD             r11, r5, r8
70    SUB             r5, r5, r8
71
72    ADD             r8, r6, r7
73    SUB             r6, r6, r7
74
75
76    STR             r12, [r0], #4
77    STR             r10, [r0], #14<<1
78
79    STR             r11, [r0], #4
80    STR             r6 , [r0], #14<<1
81
82    STR             r14, [r0], #4
83    STR             r9 , [r0], #14<<1
84
85    STR             r5, [r0], #4
86    STR             r8, [r0], #0
87
88    LDMIA           r4!, {r5-r12}
89    SUB             r0, r0, #92
90
91
92    ADD             r14, r5, r9
93    SUB             r5, r5, r9
94
95    ADD             r9, r6, r10
96    SUB             r6, r6, r10
97
98    ADD             r10, r7, r11
99    SUB             r7, r7, r11
100
101    ADD             r11, r8, r12
102    SUB             r8, r8, r12
103
104    ADD             r12, r14, r10
105    SUB             r14, r14, r10
106
107    ADD             r10, r9, r11
108    SUB             r9, r9, r11
109
110    ADD             r11, r5, r8
111    SUB             r5, r5, r8
112
113    ADD             r8, r6, r7
114    SUB             r6, r6, r7
115
116    STR             r12, [r0], #4
117    STR             r10, [r0], #14<<1
118
119    STR             r11, [r0], #4
120    STR             r6, [r0], #14<<1
121
122    STR             r14, [r0], #4
123    STR             r9, [r0], #14<<1
124
125
126    STR             r5, [r0], #4
127    STR             r8, [r0], #0
128
129    ADD             r1, r1, #1 << 5
130    ADD             r4, r4, #1 << 5
131    SUB             r0, r0, #100-8
132
133    SUBS            r3, r3, #1
134
135    BGT             POSTRADIX4_START
136
137    LDMFD           sp!, {r4-r12, r15}
138
139
140