summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/band_nrg_v5.s
blob: a463dfd8b4991e1ca00e137548aa0c185e71b64b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
@/*
@ ** Copyright 2003-2010, VisualOn, Inc.
@ **
@ ** Licensed under the Apache License, Version 2.0 (the "License");
@ ** you may not use this file except in compliance with the License.
@ ** You may obtain a copy of the License at
@ **
@ **     http://www.apache.org/licenses/LICENSE-2.0
@ **
@ ** Unless required by applicable law or agreed to in writing, software
@ ** distributed under the License is distributed on an "AS IS" BASIS,
@ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@ ** See the License for the specific language governing permissions and
@ ** limitations under the License.
@ */

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@	File:		band_nrg_v5.s
@
@	Content:	CalcBandEnergy and CalcBandEnergyMS function armv5 assemble
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

	.section .text

	.global	CalcBandEnergy

CalcBandEnergy:
	stmdb   sp!, {r4 - r11, lr}	
                   
  mov     r2, r2, lsl #16                   
	ldr     r12, [r13, #36]
	mov			r9, #0
  mov     r5, r2, asr #16    
	mov			r4, #0               
  cmp     r5, #0	
	ble     L212 

L22:
  mov     r2, r4, lsl #1                    
  ldrsh   r10, [r1, r2]                     
  add     r11, r1, r2                       
  ldrsh   r2, [r11, #2]    
	mov     r14, #0                 
  cmp     r10, r2                           
  bge     L28 
	
L23:
	ldr     r11, [r0, +r10, lsl #2]	
  add     r10, r10, #1    
	ldr     r6, [r0, +r10, lsl #2]	
	smull   r11, r7, r11, r11
	add     r10, r10, #1 
	smull	  r6, r8, r6, r6
	ldr     r11, [r0, +r10, lsl #2]
	qadd	  r14, r14, r7
	add     r10, r10, #1
	smull	  r11, r7, r11, r11
	ldr     r6, [r0, +r10, lsl #2]
	qadd	  r14, r14, r8
	smull	  r6, r8, r6, r6
  add     r10, r10, #1 
	qadd	  r14, r14, r7
	cmp     r10, r2
	qadd	  r14, r14, r8
	blt     L23   

L28:	
	qadd	  r14, r14, r14
	str     r14, [r3, +r4, lsl #2]
	add     r4, r4, #1 
	qadd	  r9, r9, r14
	cmp     r4, r5                          

  blt     L22       	

L212:	
	str     r9, [r12, #0]                     
	ldmia   sp!, {r4 - r11, pc}
	
	@ENDP  ; |CalcBandEnergy|
	
	.global	CalcBandEnergyMS

CalcBandEnergyMS:
	stmdb   sp!, {r4 - r11, lr}
	sub     r13, r13, #24
	
	mov     r12, #0 
  mov     r3, r3, lsl #16  
  mov     r14, #0 
	mov     r3, r3, asr #16      
	cmp     r3, #0          
	mov		  r4, #0                  
  ble     L315    
	
L32:	
	mov		  r5, r4, lsl #1
	mov		  r6, #0
	ldrsh   r10, [r2, r5]
	add     r5, r2, r5
	mov		  r7, #0
	ldrsh	  r11, [r5, #2]                        
	cmp     r10, r11                          
  bge     L39    

	str		  r3, [r13, #4]
	str		  r4, [r13, #8]
	str		  r12, [r13, #12]
	str		  r14, [r13, #16]

L33:	
	ldr     r8, [r0, +r10, lsl #2]                    
	ldr     r9, [r1, +r10, lsl #2]
	mov		  r8, r8, asr #1
	add		  r10, r10, #1
	mov		  r9, r9, asr #1

	ldr     r12, [r0, +r10, lsl #2]          
	add		  r5, r8, r9	          
	ldr     r14, [r1, +r10, lsl #2]
	sub		  r8, r8, r9

	smull   r5, r3, r5, r5 
	mov		  r12, r12, asr #1
	smull   r8, r4, r8, r8 
	mov		  r14, r14, asr #1

	qadd	  r6, r6, r3
	add		  r5, r12, r14
	qadd	  r7, r7, r4
	sub		  r8, r12, r14

	smull   r5, r3, r5, r5 
	add		  r10, r10, #1
	smull   r8, r4, r8, r8 
		
	qadd	  r6, r6, r3
	qadd	  r7, r7, r4

	ldr     r8, [r0, +r10, lsl #2]                    
	ldr     r9, [r1, +r10, lsl #2]
	mov		  r8, r8, asr #1
	add		  r10, r10, #1
	mov		  r9, r9, asr #1

	ldr     r12, [r0, +r10, lsl #2]          
	add		  r5, r8, r9	          
	ldr     r14, [r1, +r10, lsl #2]
	sub		  r8, r8, r9

	smull   r5, r3, r5, r5 
	mov		  r12, r12, asr #1
	smull   r8, r4, r8, r8 
	mov		  r14, r14, asr #1

	qadd	  r6, r6, r3
	add		  r5, r12, r14
	qadd	  r7, r7, r4
	sub		  r8, r12, r14

	smull   r5, r3, r5, r5 
	add		  r10, r10, #1
	smull   r8, r4, r8, r8 
		
	qadd	  r6, r6, r3
	qadd	  r7, r7, r4

	cmp     r10, r11
	
	blt		  L33

	ldr		  r3, [r13, #4]
	ldr		  r4, [r13, #8]	
	ldr		  r12, [r13, #12]
	ldr		  r14, [r13, #16]
L39:	
	qadd	  r6, r6, r6
	qadd	  r7, r7, r7	
	
	ldr		  r8, [r13, #60]
	ldr		  r9, [r13, #68]

	qadd	  r12, r12, r6
	qadd	  r14, r14, r7
	
	str		  r6, [r8, +r4, lsl #2]       
	str     r7, [r9, +r4, lsl #2]    
	
	add		  r4, r4, #1
	cmp		  r4, r3
	blt     L32            

L315:
	ldr		  r8, [r13, #64]
	ldr		  r9, [r13, #72]
	str		  r12, [r8, #0]
	str		  r14, [r9, #0]

	add     r13, r13, #24
	ldmia   sp!, {r4 - r11, pc}
	@ENDP  ; |CalcBandEnergyMS|

	.end