summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/residu_asm_opt.s
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/residu_asm_opt.s')
-rw-r--r--media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/residu_asm_opt.s456
1 files changed, 228 insertions, 228 deletions
diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/residu_asm_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/residu_asm_opt.s
index 060d9c7..86b3bd6 100644
--- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/residu_asm_opt.s
+++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/residu_asm_opt.s
@@ -1,228 +1,228 @@
-@/*
-@ ** 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.
-@ */
-@
-@void Residu(
-@ Word16 a[], /* (i) Q12 : prediction coefficients */
-@ Word16 x[], /* (i) : speech (values x[-m..-1] are needed */
-@ Word16 y[], /* (o) x2 : residual signal */
-@ Word16 lg /* (i) : size of filtering */
-@ )
-@a[] --- r0
-@x[] --- r1
-@y[] --- r2
-@lg --- r3
-
- .section .text
- .global Residu_opt
-
-Residu_opt:
-
- STMFD r13!, {r4 - r12, r14}
-
- LDRH r5, [r0], #2
- LDRH r6, [r0], #2
- ORR r5, r6, r5, LSL #16 @r5 --- a0, a1
-
- LDRH r6, [r0], #2
- LDRH r7, [r0], #2
- ORR r6, r7, r6, LSL #16 @r6 --- a2, a3
-
- LDRH r7, [r0], #2
- LDRH r8, [r0], #2
- ORR r7, r8, r7, LSL #16 @r7 --- a4, a5
-
- LDRH r8, [r0], #2
- LDRH r9, [r0], #2
- ORR r8, r9, r8, LSL #16 @r8 --- a6, a7
-
- LDRH r9, [r0], #2
- LDRH r10, [r0], #2
- ORR r9, r10, r9, LSL #16 @r9 --- a8, a9
-
- LDRH r10, [r0], #2
- LDRH r11, [r0], #2
- ORR r10, r11, r10, LSL #16 @r10 --- a10, a11
-
- LDRH r11, [r0], #2
- LDRH r12, [r0], #2
- ORR r11, r12, r11, LSL #16 @r11 --- a12, a13
-
- LDRH r12, [r0], #2
- LDRH r4, [r0], #2
- ORR r12, r4, r12, LSL #16 @r12 --- a14, a15
-
-
- STMFD r13!, {r8 - r12} @store r8-r12
- LDRH r4, [r0], #2 @load a16
- MOV r14, r3, ASR #2 @one loop get 4 outputs
- ADD r1, r1, #4
- MOV r0, r2
- ORR r14, r4, r14, LSL #16 @r14 --- loopnum, a16
-
-residu_loop:
-
- LDR r10, [r1], #-4 @r10 --- x[3], x[2]
- LDR r2, [r1], #-4 @r2 --- x[1], x[0]
-
- SMULTB r3, r5, r2 @i1(0) --- r3 = x[0] * a0
- SMULTT r4, r5, r2 @i2(0) --- r4 = x[1] * a0
- SMULTB r11, r5, r10 @i3(0) --- r11 = x[2] * a0
- SMULTT r12, r5, r10 @i4(0) --- r12 = x[3] * a0
-
- SMLABB r4, r5, r2, r4 @i2(1) --- r4 += x[0] * a1
- SMLABT r11, r5, r2, r11 @i3(1) --- r11 += x[1] * a0
- SMLABB r12, r5, r10, r12 @i4(1) --- r12 += x[2] * a1
-
- SMLATB r11, r6, r2, r11 @i3(2) --- r11 += x[0] * a2
- SMLATT r12, r6, r2, r12 @i4(2) --- r12 += x[1] * a2
- SMLABB r12, r6, r2, r12 @i4(3) --- r12 += x[0] * a3
-
- LDR r2, [r1], #-4 @r2 ---- x[-1], x[-2]
-
- SMLABT r3, r5, r2, r3 @i1(1) --- r3 += x[-1] * a1
- SMLATT r4, r6, r2, r4 @i2(2) --- r4 += x[-1] * a2
- SMLABT r11, r6, r2, r11 @i3(3) --- r11 += x[-1] * a3
- SMLATT r12, r7, r2, r12 @i4(4) --- r12 += x[-1] * a4
- SMLATB r3, r6, r2, r3 @i1(2) --- r3 += x[-2] * a2
-
- SMLABB r4, r6, r2, r4 @ i2 (3)
- SMLATB r11,r7, r2, r11 @ i3 (4)
- SMLABB r12,r7, r2, r12 @ i4 (5)
-
- LDR r2,[r1],#-4
- SMLABT r3, r6, r2, r3 @ i1 (3)
- SMLATT r4, r7, r2, r4 @ i2 (4)
- SMLABT r11,r7, r2, r11 @ i3 (5)
- SMLATT r12,r8, r2, r12 @ i4 (6)
- SMLATB r3, r7, r2, r3 @ i1 (4)
- SMLABB r4, r7, r2, r4 @ i2 (5)
- SMLATB r11,r8, r2, r11 @ i3 (6)
- SMLABB r12,r8, r2, r12 @ i4 (7)
-
- LDR r2,[r1],#-4
- SMLABT r3, r7, r2, r3 @ i1 (5)
- SMLATT r4, r8, r2, r4 @ i2 (6)
- SMLABT r11,r8, r2, r11 @ i3 (7)
- SMLATT r12,r9, r2, r12 @ i4 (8)
- SMLATB r3, r8, r2, r3 @ i1 (6)
- SMLABB r4, r8, r2, r4 @ i2 (7)
- SMLATB r11,r9, r2, r11 @ i3 (8)
- SMLABB r12,r9, r2, r12 @ i4 (9)
- LDR r10, [r13, #8] @ [ a10 | a11]
-
- LDR r2,[r1],#-4
- SMLABT r3, r8, r2, r3 @ i1 (7)
- SMLATT r4, r9, r2, r4 @ i2 (8)
- SMLABT r11,r9, r2, r11 @ i3 (9)
- SMLATT r12,r10, r2, r12 @ i4 (10)
- SMLATB r3, r9, r2, r3 @ i1 (8)
- SMLABB r4, r9, r2, r4 @ i2 (9)
- SMLATB r11,r10, r2, r11 @ i3 (10)
- SMLABB r12,r10, r2, r12 @ i4 (11)
- LDR r8, [r13, #12] @ [ a12 | a13 ]
-
- LDR r2,[r1],#-4
- SMLABT r3, r9, r2, r3 @ i1 (9)
- SMLATT r4, r10, r2, r4 @ i2 (10)
- SMLABT r11,r10, r2, r11 @ i3 (11)
- SMLATT r12,r8, r2, r12 @ i4 (12)
- SMLATB r3, r10, r2, r3 @ i1 (10)
- SMLABB r4, r10, r2, r4 @ i2 (11)
- SMLATB r11,r8, r2, r11 @ i3 (12)
- SMLABB r12,r8, r2, r12 @ i4 (13)
- LDR r9, [r13, #16] @ [ a14 | a15 ]
-
- LDR r2,[r1],#-4
- SMLABT r3, r10, r2, r3 @ i1 (11)
- SMLATT r4, r8, r2, r4 @ i2 (12)
- SMLABT r11,r8, r2, r11 @ i3 (13)
- SMLATT r12,r9, r2, r12 @ i4 (14)
- SMLATB r3, r8, r2, r3 @ i1 (12)
- SMLABB r4, r8, r2, r4 @ i2 (13)
- SMLATB r11,r9, r2, r11 @ i3 (14)
- SMLABB r12,r9, r2, r12 @ i4 (15)
-
-
- LDR r2,[r1],#-4
- SMLABT r3, r8, r2, r3 @ i1 (13)
- SMLATT r4, r9, r2, r4 @ i2 (14)
- SMLABT r11,r9, r2, r11 @ i3 (15)
- SMLABT r12,r14, r2, r12 @ i4 (16)
- SMLATB r3, r9, r2, r3 @ i1 (14)
- SMLABB r4, r9, r2, r4 @ i2 (15)
- SMLABB r11,r14, r2, r11 @ i3 (16)
- LDR r8, [r13] @ [ a6 | a7 ]
-
- LDR r2,[r1],#44 @ Change
- SMLABT r3, r9, r2, r3
- SMLABB r3, r14, r2, r3
- SMLABT r4, r14, r2, r4
- LDR r9, [r13, #4] @ [ a8 | a9 ]
-
-
- QADD r3,r3,r3
- QADD r4,r4,r4
- QADD r11,r11,r11
- QADD r12,r12,r12
-
- QADD r3,r3,r3
- QADD r4,r4,r4
- QADD r11,r11,r11
- QADD r12,r12,r12
-
- QADD r3,r3,r3
- QADD r4,r4,r4
- QADD r11,r11,r11
- QADD r12,r12,r12
-
- QADD r3,r3,r3
- QADD r4,r4,r4
- QADD r11,r11,r11
- QADD r12,r12,r12
-
- MOV r2,#32768
-
- QDADD r3,r2,r3
- QDADD r4,r2,r4
- QDADD r11,r2,r11
- QDADD r12,r2,r12
-
-
- MOV r3,r3,asr #16
- MOV r4,r4,asr #16
- MOV r11,r11,asr #16
- MOV r12,r12,asr #16
-
- STRH r3,[r0],#2
- STRH r4,[r0],#2
- STRH r11,[r0],#2
- STRH r12,[r0],#2
-
- MOV r2,r14,asr #16
- SUB r14, r14, #0x10000
- SUBS r2,r2,#1
- BNE residu_loop
-end:
- LDMFD r13!, {r8 -r12}
- LDMFD r13!, {r4 -r12,pc}
-
- @ENDFUNC
- .END
-
-
-
-
-
+@/*
+@ ** 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.
+@ */
+@
+@void Residu(
+@ Word16 a[], /* (i) Q12 : prediction coefficients */
+@ Word16 x[], /* (i) : speech (values x[-m..-1] are needed */
+@ Word16 y[], /* (o) x2 : residual signal */
+@ Word16 lg /* (i) : size of filtering */
+@ )
+@a[] --- r0
+@x[] --- r1
+@y[] --- r2
+@lg --- r3
+
+ .section .text
+ .global Residu_opt
+
+Residu_opt:
+
+ STMFD r13!, {r4 - r12, r14}
+
+ LDRH r5, [r0], #2
+ LDRH r6, [r0], #2
+ ORR r5, r6, r5, LSL #16 @r5 --- a0, a1
+
+ LDRH r6, [r0], #2
+ LDRH r7, [r0], #2
+ ORR r6, r7, r6, LSL #16 @r6 --- a2, a3
+
+ LDRH r7, [r0], #2
+ LDRH r8, [r0], #2
+ ORR r7, r8, r7, LSL #16 @r7 --- a4, a5
+
+ LDRH r8, [r0], #2
+ LDRH r9, [r0], #2
+ ORR r8, r9, r8, LSL #16 @r8 --- a6, a7
+
+ LDRH r9, [r0], #2
+ LDRH r10, [r0], #2
+ ORR r9, r10, r9, LSL #16 @r9 --- a8, a9
+
+ LDRH r10, [r0], #2
+ LDRH r11, [r0], #2
+ ORR r10, r11, r10, LSL #16 @r10 --- a10, a11
+
+ LDRH r11, [r0], #2
+ LDRH r12, [r0], #2
+ ORR r11, r12, r11, LSL #16 @r11 --- a12, a13
+
+ LDRH r12, [r0], #2
+ LDRH r4, [r0], #2
+ ORR r12, r4, r12, LSL #16 @r12 --- a14, a15
+
+
+ STMFD r13!, {r8 - r12} @store r8-r12
+ LDRH r4, [r0], #2 @load a16
+ MOV r14, r3, ASR #2 @one loop get 4 outputs
+ ADD r1, r1, #4
+ MOV r0, r2
+ ORR r14, r4, r14, LSL #16 @r14 --- loopnum, a16
+
+residu_loop:
+
+ LDR r10, [r1], #-4 @r10 --- x[3], x[2]
+ LDR r2, [r1], #-4 @r2 --- x[1], x[0]
+
+ SMULTB r3, r5, r2 @i1(0) --- r3 = x[0] * a0
+ SMULTT r4, r5, r2 @i2(0) --- r4 = x[1] * a0
+ SMULTB r11, r5, r10 @i3(0) --- r11 = x[2] * a0
+ SMULTT r12, r5, r10 @i4(0) --- r12 = x[3] * a0
+
+ SMLABB r4, r5, r2, r4 @i2(1) --- r4 += x[0] * a1
+ SMLABT r11, r5, r2, r11 @i3(1) --- r11 += x[1] * a0
+ SMLABB r12, r5, r10, r12 @i4(1) --- r12 += x[2] * a1
+
+ SMLATB r11, r6, r2, r11 @i3(2) --- r11 += x[0] * a2
+ SMLATT r12, r6, r2, r12 @i4(2) --- r12 += x[1] * a2
+ SMLABB r12, r6, r2, r12 @i4(3) --- r12 += x[0] * a3
+
+ LDR r2, [r1], #-4 @r2 ---- x[-1], x[-2]
+
+ SMLABT r3, r5, r2, r3 @i1(1) --- r3 += x[-1] * a1
+ SMLATT r4, r6, r2, r4 @i2(2) --- r4 += x[-1] * a2
+ SMLABT r11, r6, r2, r11 @i3(3) --- r11 += x[-1] * a3
+ SMLATT r12, r7, r2, r12 @i4(4) --- r12 += x[-1] * a4
+ SMLATB r3, r6, r2, r3 @i1(2) --- r3 += x[-2] * a2
+
+ SMLABB r4, r6, r2, r4 @ i2 (3)
+ SMLATB r11,r7, r2, r11 @ i3 (4)
+ SMLABB r12,r7, r2, r12 @ i4 (5)
+
+ LDR r2,[r1],#-4
+ SMLABT r3, r6, r2, r3 @ i1 (3)
+ SMLATT r4, r7, r2, r4 @ i2 (4)
+ SMLABT r11,r7, r2, r11 @ i3 (5)
+ SMLATT r12,r8, r2, r12 @ i4 (6)
+ SMLATB r3, r7, r2, r3 @ i1 (4)
+ SMLABB r4, r7, r2, r4 @ i2 (5)
+ SMLATB r11,r8, r2, r11 @ i3 (6)
+ SMLABB r12,r8, r2, r12 @ i4 (7)
+
+ LDR r2,[r1],#-4
+ SMLABT r3, r7, r2, r3 @ i1 (5)
+ SMLATT r4, r8, r2, r4 @ i2 (6)
+ SMLABT r11,r8, r2, r11 @ i3 (7)
+ SMLATT r12,r9, r2, r12 @ i4 (8)
+ SMLATB r3, r8, r2, r3 @ i1 (6)
+ SMLABB r4, r8, r2, r4 @ i2 (7)
+ SMLATB r11,r9, r2, r11 @ i3 (8)
+ SMLABB r12,r9, r2, r12 @ i4 (9)
+ LDR r10, [r13, #8] @ [ a10 | a11]
+
+ LDR r2,[r1],#-4
+ SMLABT r3, r8, r2, r3 @ i1 (7)
+ SMLATT r4, r9, r2, r4 @ i2 (8)
+ SMLABT r11,r9, r2, r11 @ i3 (9)
+ SMLATT r12,r10, r2, r12 @ i4 (10)
+ SMLATB r3, r9, r2, r3 @ i1 (8)
+ SMLABB r4, r9, r2, r4 @ i2 (9)
+ SMLATB r11,r10, r2, r11 @ i3 (10)
+ SMLABB r12,r10, r2, r12 @ i4 (11)
+ LDR r8, [r13, #12] @ [ a12 | a13 ]
+
+ LDR r2,[r1],#-4
+ SMLABT r3, r9, r2, r3 @ i1 (9)
+ SMLATT r4, r10, r2, r4 @ i2 (10)
+ SMLABT r11,r10, r2, r11 @ i3 (11)
+ SMLATT r12,r8, r2, r12 @ i4 (12)
+ SMLATB r3, r10, r2, r3 @ i1 (10)
+ SMLABB r4, r10, r2, r4 @ i2 (11)
+ SMLATB r11,r8, r2, r11 @ i3 (12)
+ SMLABB r12,r8, r2, r12 @ i4 (13)
+ LDR r9, [r13, #16] @ [ a14 | a15 ]
+
+ LDR r2,[r1],#-4
+ SMLABT r3, r10, r2, r3 @ i1 (11)
+ SMLATT r4, r8, r2, r4 @ i2 (12)
+ SMLABT r11,r8, r2, r11 @ i3 (13)
+ SMLATT r12,r9, r2, r12 @ i4 (14)
+ SMLATB r3, r8, r2, r3 @ i1 (12)
+ SMLABB r4, r8, r2, r4 @ i2 (13)
+ SMLATB r11,r9, r2, r11 @ i3 (14)
+ SMLABB r12,r9, r2, r12 @ i4 (15)
+
+
+ LDR r2,[r1],#-4
+ SMLABT r3, r8, r2, r3 @ i1 (13)
+ SMLATT r4, r9, r2, r4 @ i2 (14)
+ SMLABT r11,r9, r2, r11 @ i3 (15)
+ SMLABT r12,r14, r2, r12 @ i4 (16)
+ SMLATB r3, r9, r2, r3 @ i1 (14)
+ SMLABB r4, r9, r2, r4 @ i2 (15)
+ SMLABB r11,r14, r2, r11 @ i3 (16)
+ LDR r8, [r13] @ [ a6 | a7 ]
+
+ LDR r2,[r1],#44 @ Change
+ SMLABT r3, r9, r2, r3
+ SMLABB r3, r14, r2, r3
+ SMLABT r4, r14, r2, r4
+ LDR r9, [r13, #4] @ [ a8 | a9 ]
+
+
+ QADD r3,r3,r3
+ QADD r4,r4,r4
+ QADD r11,r11,r11
+ QADD r12,r12,r12
+
+ QADD r3,r3,r3
+ QADD r4,r4,r4
+ QADD r11,r11,r11
+ QADD r12,r12,r12
+
+ QADD r3,r3,r3
+ QADD r4,r4,r4
+ QADD r11,r11,r11
+ QADD r12,r12,r12
+
+ QADD r3,r3,r3
+ QADD r4,r4,r4
+ QADD r11,r11,r11
+ QADD r12,r12,r12
+
+ MOV r2,#32768
+
+ QDADD r3,r2,r3
+ QDADD r4,r2,r4
+ QDADD r11,r2,r11
+ QDADD r12,r2,r12
+
+
+ MOV r3,r3,asr #16
+ MOV r4,r4,asr #16
+ MOV r11,r11,asr #16
+ MOV r12,r12,asr #16
+
+ STRH r3,[r0],#2
+ STRH r4,[r0],#2
+ STRH r11,[r0],#2
+ STRH r12,[r0],#2
+
+ MOV r2,r14,asr #16
+ SUB r14, r14, #0x10000
+ SUBS r2,r2,#1
+ BNE residu_loop
+end:
+ LDMFD r13!, {r8 -r12}
+ LDMFD r13!, {r4 -r12,pc}
+
+ @ENDFUNC
+ .END
+
+
+
+
+