diff options
Diffstat (limited to 'media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/pred_lt4_1_opt.s')
-rw-r--r-- | media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/pred_lt4_1_opt.s | 920 |
1 files changed, 460 insertions, 460 deletions
diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/pred_lt4_1_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/pred_lt4_1_opt.s index d5dd8f0..d7b4509 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/pred_lt4_1_opt.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/pred_lt4_1_opt.s @@ -1,460 +1,460 @@ -@/*
-@ ** 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 Pred_lt4(
-@ Word16 exc[], /* in/out: excitation buffer */
-@ Word16 T0, /* input : integer pitch lag */
-@ Word16 frac, /* input : fraction of lag */
-@ Word16 L_subfr /* input : subframe size */
-@ )
-
-@******************************
-@ ARM Register
-@******************************
-@ r0 --- exc[]
-@ r1 --- T0
-@ r2 --- frac
-@ r3 --- L_subfr
-
- .section .text
- .global pred_lt4_asm
- .extern inter4_2
-
-pred_lt4_asm:
-
- STMFD r13!, {r4 - r12, r14}
- RSB r4, r1, #0 @-T0
- RSB r2, r2, #0 @frac = -frac
- ADD r5, r0, r4, LSL #1 @x = exc - T0
- CMP r2, #0
- ADDLT r2, r2, #4 @frac += UP_SAMP
- SUBLT r5, r5, #2 @x--
- SUB r5, r5, #30 @x -= 15
- RSB r4, r2, #3 @k = 3 - frac
- LDR r6, Table
- MOV r8, r4, LSL #6
- @MOV r7, #0 @j = 0
- ADD r8, r6, r8 @ptr2 = &(inter4_2[k][0])
-
- MOV r1, r5
- MOV r5, #0x8000
- MOV r14, #21
-@ used register
- @r0 --- exc[] r1 --- x r7 --- j r8 --- ptr2 r5 --- 0x8000
-THREE_LOOP:
-
- @MOV r1, r5 @ptr1 = x
- MOV r2, r8 @ptr = ptr2
- LDR r3, [r2], #4 @h[0], h[1]
- LDRSH r4, [r1], #2 @x[0]
- LDRSH r6, [r1], #2 @x[1]
- LDRSH r9, [r1], #2 @x[2]
-
- SMULBB r10, r4, r3 @x[0] * h[0]
- SMULBB r11, r6, r3 @x[1] * h[0]
- SMULBB r12, r9, r3 @x[2] * h[0]
-
- LDRSH r4, [r1], #2 @x[3]
- SMLABT r10, r6, r3, r10 @x[1] * h[1]
- SMLABT r11, r9, r3, r11 @x[2] * h[1]
- SMLABT r12, r4, r3, r12 @x[3] * h[1]
-
- LDR r3, [r2], #4 @h[2], h[3]
- LDRSH r6, [r1], #2 @x[4]
- SMLABB r10, r9, r3, r10 @x[2] * h[2]
- SMLABB r11, r4, r3, r11 @x[3] * h[2]
- SMLABB r12, r6, r3, r12 @x[4] * h[2]
-
- LDRSH r9, [r1], #2 @x[5]
- SMLABT r10, r4, r3, r10 @x[3] * h[3]
- SMLABT r11, r6, r3, r11 @x[4] * h[3]
- SMLABT r12, r9, r3, r12 @x[5] * h[3]
-
- LDR r3, [r2], #4 @h[4], h[5]
- LDRSH r4, [r1], #2 @x[6]
- SMLABB r10, r6, r3, r10 @x[4] * h[4]
- SMLABB r11, r9, r3, r11 @x[5] * h[4]
- SMLABB r12, r4, r3, r12 @x[6] * h[4]
-
- LDRSH r6, [r1], #2 @x[7]
- SMLABT r10, r9, r3, r10 @x[5] * h[5]
- SMLABT r11, r4, r3, r11 @x[6] * h[5]
- SMLABT r12, r6, r3, r12 @x[7] * h[5]
-
- LDR r3, [r2], #4 @h[6], h[7]
- LDRSH r9, [r1], #2 @x[8]
- SMLABB r10, r4, r3, r10 @x[6] * h[6]
- SMLABB r11, r6, r3, r11 @x[7] * h[6]
- SMLABB r12, r9, r3, r12 @x[8] * h[6]
-
- LDRSH r4, [r1], #2 @x[9]
- SMLABT r10, r6, r3, r10 @x[7] * h[7]
- SMLABT r11, r9, r3, r11 @x[8] * h[7]
- SMLABT r12, r4, r3, r12 @x[9] * h[7]
-
- LDR r3, [r2], #4 @h[8], h[9]
- LDRSH r6, [r1], #2 @x[10]
- SMLABB r10, r9, r3, r10 @x[8] * h[8]
- SMLABB r11, r4, r3, r11 @x[9] * h[8]
- SMLABB r12, r6, r3, r12 @x[10] * h[8]
-
- LDRSH r9, [r1], #2 @x[11]
- SMLABT r10, r4, r3, r10 @x[9] * h[9]
- SMLABT r11, r6, r3, r11 @x[10] * h[9]
- SMLABT r12, r9, r3, r12 @x[11] * h[9]
-
- LDR r3, [r2], #4 @h[10], h[11]
- LDRSH r4, [r1], #2 @x[12]
- SMLABB r10, r6, r3, r10 @x[10] * h[10]
- SMLABB r11, r9, r3, r11 @x[11] * h[10]
- SMLABB r12, r4, r3, r12 @x[12] * h[10]
-
- LDRSH r6, [r1], #2 @x[13]
- SMLABT r10, r9, r3, r10 @x[11] * h[11]
- SMLABT r11, r4, r3, r11 @x[12] * h[11]
- SMLABT r12, r6, r3, r12 @x[13] * h[11]
-
- LDR r3, [r2], #4 @h[12], h[13]
- LDRSH r9, [r1], #2 @x[14]
- SMLABB r10, r4, r3, r10 @x[12] * h[12]
- SMLABB r11, r6, r3, r11 @x[13] * h[12]
- SMLABB r12, r9, r3, r12 @x[14] * h[12]
-
- LDRSH r4, [r1], #2 @x[15]
- SMLABT r10, r6, r3, r10 @x[13] * h[13]
- SMLABT r11, r9, r3, r11 @x[14] * h[13]
- SMLABT r12, r4, r3, r12 @x[15] * h[13]
-
- LDR r3, [r2], #4 @h[14], h[15]
- LDRSH r6, [r1], #2 @x[16]
- SMLABB r10, r9, r3, r10 @x[14] * h[14]
- SMLABB r11, r4, r3, r11 @x[15] * h[14]
- SMLABB r12, r6, r3, r12 @x[16] * h[14]
-
- LDRSH r9, [r1], #2 @x[17]
- SMLABT r10, r4, r3, r10 @x[15] * h[15]
- SMLABT r11, r6, r3, r11 @x[16] * h[15]
- SMLABT r12, r9, r3, r12 @x[17] * h[15]
-
- LDR r3, [r2], #4 @h[16], h[17]
- LDRSH r4, [r1], #2 @x[18]
- SMLABB r10, r6, r3, r10 @x[16] * h[16]
- SMLABB r11, r9, r3, r11 @x[17] * h[16]
- SMLABB r12, r4, r3, r12 @x[18] * h[16]
-
- LDRSH r6, [r1], #2 @x[19]
- SMLABT r10, r9, r3, r10 @x[17] * h[17]
- SMLABT r11, r4, r3, r11 @x[18] * h[17]
- SMLABT r12, r6, r3, r12 @x[19] * h[17]
-
- LDR r3, [r2], #4 @h[18], h[19]
- LDRSH r9, [r1], #2 @x[20]
- SMLABB r10, r4, r3, r10 @x[18] * h[18]
- SMLABB r11, r6, r3, r11 @x[19] * h[18]
- SMLABB r12, r9, r3, r12 @x[20] * h[18]
-
- LDRSH r4, [r1], #2 @x[21]
- SMLABT r10, r6, r3, r10 @x[19] * h[19]
- SMLABT r11, r9, r3, r11 @x[20] * h[19]
- SMLABT r12, r4, r3, r12 @x[21] * h[19]
-
- LDR r3, [r2], #4 @h[20], h[21]
- LDRSH r6, [r1], #2 @x[22]
- SMLABB r10, r9, r3, r10 @x[20] * h[20]
- SMLABB r11, r4, r3, r11 @x[21] * h[20]
- SMLABB r12, r6, r3, r12 @x[22] * h[20]
-
- LDRSH r9, [r1], #2 @x[23]
- SMLABT r10, r4, r3, r10 @x[21] * h[21]
- SMLABT r11, r6, r3, r11 @x[22] * h[21]
- SMLABT r12, r9, r3, r12 @x[23] * h[21]
-
- LDR r3, [r2], #4 @h[22], h[23]
- LDRSH r4, [r1], #2 @x[24]
- SMLABB r10, r6, r3, r10 @x[22] * h[22]
- SMLABB r11, r9, r3, r11 @x[23] * h[22]
- SMLABB r12, r4, r3, r12 @x[24] * h[22]
-
- LDRSH r6, [r1], #2 @x[25]
- SMLABT r10, r9, r3, r10 @x[23] * h[23]
- SMLABT r11, r4, r3, r11 @x[24] * h[23]
- SMLABT r12, r6, r3, r12 @x[25] * h[23]
-
- LDR r3, [r2], #4 @h[24], h[25]
- LDRSH r9, [r1], #2 @x[26]
- SMLABB r10, r4, r3, r10 @x[24] * h[24]
- SMLABB r11, r6, r3, r11 @x[25] * h[24]
- SMLABB r12, r9, r3, r12 @x[26] * h[24]
-
- LDRSH r4, [r1], #2 @x[27]
- SMLABT r10, r6, r3, r10 @x[25] * h[25]
- SMLABT r11, r9, r3, r11 @x[26] * h[25]
- SMLABT r12, r4, r3, r12 @x[27] * h[25]
-
- LDR r3, [r2], #4 @h[26], h[27]
- LDRSH r6, [r1], #2 @x[28]
- SMLABB r10, r9, r3, r10 @x[26] * h[26]
- SMLABB r11, r4, r3, r11 @x[27] * h[26]
- SMLABB r12, r6, r3, r12 @x[28] * h[26]
-
- LDRSH r9, [r1], #2 @x[29]
- SMLABT r10, r4, r3, r10 @x[27] * h[27]
- SMLABT r11, r6, r3, r11 @x[28] * h[27]
- SMLABT r12, r9, r3, r12 @x[29] * h[27]
-
- LDR r3, [r2], #4 @h[28], h[29]
- LDRSH r4, [r1], #2 @x[30]
- SMLABB r10, r6, r3, r10 @x[28] * h[28]
- SMLABB r11, r9, r3, r11 @x[29] * h[28]
- SMLABB r12, r4, r3, r12 @x[30] * h[28]
-
- LDRSH r6, [r1], #2 @x[31]
- SMLABT r10, r9, r3, r10 @x[29] * h[29]
- SMLABT r11, r4, r3, r11 @x[30] * h[29]
- SMLABT r12, r6, r3, r12 @x[31] * h[29]
-
- LDR r3, [r2], #4 @h[30], h[31]
- LDRSH r9, [r1], #2 @x[32]
- SMLABB r10, r4, r3, r10 @x[30] * h[30]
- SMLABB r11, r6, r3, r11 @x[31] * h[30]
- SMLABB r12, r9, r3, r12 @x[32] * h[30]
-
- LDRSH r4, [r1], #-60 @x[33]
- SMLABT r10, r6, r3, r10 @x[31] * h[31]
- SMLABT r11, r9, r3, r11 @x[32] * h[31]
- SMLABT r12, r4, r3, r12 @x[33] * h[31]
-
- @SSAT r10, #32, r10, LSL #2
- @SSAT r11, #32, r11, LSL #2
- @SSAT r12, #32, r12, LSL #2
-
- MOV r10, r10, LSL #1
- MOV r11, r11, LSL #1
- MOV r12, r12, LSL #1
-
- QADD r10, r10, r10
- QADD r11, r11, r11
- QADD r12, r12, r12
-
- QADD r10, r10, r5
- QADD r11, r11, r5
- QADD r12, r12, r5
-
- SUBS r14, r14, #1
-
- MOV r10, r10, ASR #16
- MOV r11, r11, ASR #16
- MOV r12, r12, ASR #16
-
- STRH r10, [r0], #2
- STRH r11, [r0], #2
- STRH r12, [r0], #2
- BNE THREE_LOOP
-
- MOV r2, r8 @ptr = ptr2
-
-Last2LOOP:
-
- LDR r3, [r2], #4 @h[0], h[1]
- LDRSH r4, [r1], #2 @x[0]
- LDRSH r6, [r1], #2 @x[1]
- LDRSH r9, [r1], #2 @x[2]
-
- SMULBB r10, r4, r3 @x[0] * h[0]
- SMULBB r11, r6, r3 @x[1] * h[0]
-
- SMLABT r10, r6, r3, r10 @x[1] * h[1]
- SMLABT r11, r9, r3, r11 @x[2] * h[1]
-
- LDR r3, [r2], #4 @h[2], h[3]
- LDRSH r4, [r1], #2 @x[3]
- LDRSH r6, [r1], #2 @x[4]
-
- SMLABB r10, r9, r3, r10 @x[2] * h[2]
- SMLABB r11, r4, r3, r11 @x[3] * h[2]
-
- SMLABT r10, r4, r3, r10 @x[3] * h[3]
- SMLABT r11, r6, r3, r11 @x[4] * h[3]
-
- LDR r3, [r2], #4 @h[4], h[5]
- LDRSH r9, [r1], #2 @x[5]
- LDRSH r4, [r1], #2 @x[6]
-
- SMLABB r10, r6, r3, r10 @x[4] * h[4]
- SMLABB r11, r9, r3, r11 @x[5] * h[4]
-
- SMLABT r10, r9, r3, r10 @x[5] * h[5]
- SMLABT r11, r4, r3, r11 @x[6] * h[5]
-
- LDR r3, [r2], #4 @h[6], h[7]
- LDRSH r6, [r1], #2 @x[7]
- LDRSH r9, [r1], #2 @x[8]
-
- SMLABB r10, r4, r3, r10 @x[6] * h[6]
- SMLABB r11, r6, r3, r11 @x[7] * h[6]
-
- SMLABT r10, r6, r3, r10 @x[7] * h[7]
- SMLABT r11, r9, r3, r11 @x[8] * h[7]
-
- LDR r3, [r2], #4 @h[8], h[9]
- LDRSH r4, [r1], #2 @x[9]
- LDRSH r6, [r1], #2 @x[10]
-
- SMLABB r10, r9, r3, r10 @x[8] * h[8]
- SMLABB r11, r4, r3, r11 @x[9] * h[8]
-
- SMLABT r10, r4, r3, r10 @x[9] * h[9]
- SMLABT r11, r6, r3, r11 @x[10] * h[9]
-
- LDR r3, [r2], #4 @h[10], h[11]
- LDRSH r9, [r1], #2 @x[11]
- LDRSH r4, [r1], #2 @x[12]
-
- SMLABB r10, r6, r3, r10 @x[10] * h[10]
- SMLABB r11, r9, r3, r11 @x[11] * h[10]
-
- SMLABT r10, r9, r3, r10 @x[11] * h[11]
- SMLABT r11, r4, r3, r11 @x[12] * h[11]
-
- LDR r3, [r2], #4 @h[12], h[13]
- LDRSH r6, [r1], #2 @x[13]
- LDRSH r9, [r1], #2 @x[14]
-
- SMLABB r10, r4, r3, r10 @x[12] * h[12]
- SMLABB r11, r6, r3, r11 @x[13] * h[12]
-
- SMLABT r10, r6, r3, r10 @x[13] * h[13]
- SMLABT r11, r9, r3, r11 @x[14] * h[13]
-
- LDR r3, [r2], #4 @h[14], h[15]
- LDRSH r4, [r1], #2 @x[15]
- LDRSH r6, [r1], #2 @x[16]
-
- SMLABB r10, r9, r3, r10 @x[14] * h[14]
- SMLABB r11, r4, r3, r11 @x[15] * h[14]
-
- SMLABT r10, r4, r3, r10 @x[15] * h[15]
- SMLABT r11, r6, r3, r11 @x[16] * h[15]
-
- LDR r3, [r2], #4 @h[16], h[17]
- LDRSH r9, [r1], #2 @x[17]
- LDRSH r4, [r1], #2 @x[18]
-
- SMLABB r10, r6, r3, r10 @x[16] * h[16]
- SMLABB r11, r9, r3, r11 @x[17] * h[16]
-
- SMLABT r10, r9, r3, r10 @x[17] * h[17]
- SMLABT r11, r4, r3, r11 @x[18] * h[17]
-
- LDR r3, [r2], #4 @h[18], h[19]
- LDRSH r6, [r1], #2 @x[19]
- LDRSH r9, [r1], #2 @x[20]
-
- SMLABB r10, r4, r3, r10 @x[18] * h[18]
- SMLABB r11, r6, r3, r11 @x[19] * h[18]
-
- SMLABT r10, r6, r3, r10 @x[19] * h[19]
- SMLABT r11, r9, r3, r11 @x[20] * h[19]
-
- LDR r3, [r2], #4 @h[20], h[21]
- LDRSH r4, [r1], #2 @x[21]
- LDRSH r6, [r1], #2 @x[22]
-
- SMLABB r10, r9, r3, r10 @x[20] * h[20]
- SMLABB r11, r4, r3, r11 @x[21] * h[20]
-
- SMLABT r10, r4, r3, r10 @x[21] * h[21]
- SMLABT r11, r6, r3, r11 @x[22] * h[21]
-
- LDR r3, [r2], #4 @h[22], h[23]
- LDRSH r9, [r1], #2 @x[23]
- LDRSH r4, [r1], #2 @x[24]
-
- SMLABB r10, r6, r3, r10 @x[22] * h[22]
- SMLABB r11, r9, r3, r11 @x[23] * h[22]
-
- SMLABT r10, r9, r3, r10 @x[23] * h[23]
- SMLABT r11, r4, r3, r11 @x[24] * h[23]
-
- LDR r3, [r2], #4 @h[24], h[25]
- LDRSH r6, [r1], #2 @x[25]
- LDRSH r9, [r1], #2 @x[26]
-
- SMLABB r10, r4, r3, r10 @x[24] * h[24]
- SMLABB r11, r6, r3, r11 @x[25] * h[24]
-
- SMLABT r10, r6, r3, r10 @x[25] * h[25]
- SMLABT r11, r9, r3, r11 @x[26] * h[25]
-
- LDR r3, [r2], #4 @h[26], h[27]
- LDRSH r4, [r1], #2 @x[27]
- LDRSH r6, [r1], #2 @x[28]
-
- SMLABB r10, r9, r3, r10 @x[26] * h[26]
- SMLABB r11, r4, r3, r11 @x[27] * h[26]
-
- SMLABT r10, r4, r3, r10 @x[27] * h[27]
- SMLABT r11, r6, r3, r11 @x[28] * h[27]
-
- LDR r3, [r2], #4 @h[28], h[29]
- LDRSH r9, [r1], #2 @x[29]
- LDRSH r4, [r1], #2 @x[30]
-
- SMLABB r10, r6, r3, r10 @x[28] * h[28]
- SMLABB r11, r9, r3, r11 @x[29] * h[28]
-
- SMLABT r10, r9, r3, r10 @x[29] * h[29]
- SMLABT r11, r4, r3, r11 @x[30] * h[29]
-
- LDR r3, [r2], #4 @h[30], h[31]
- LDRSH r6, [r1], #2 @x[31]
- LDRSH r9, [r1], #2 @x[32]
-
- SMLABB r10, r4, r3, r10 @x[30] * h[30]
- SMLABB r11, r6, r3, r11 @x[31] * h[30]
-
- SMLABT r10, r6, r3, r10 @x[31] * h[31]
- SMLABT r11, r9, r3, r11 @x[32] * h[31]
-
- @SSAT r10, #32, r10, LSL #2
- @SSAT r11, #32, r11, LSL #2
- MOV r10, r10, LSL #1
- MOV r11, r11, LSL #1
-
- QADD r10, r10, r10
- QADD r11, r11, r11
-
- QADD r10, r10, r5
- QADD r11, r11, r5
-
- MOV r10, r10, ASR #16
- MOV r11, r11, ASR #16
-
- STRH r10, [r0], #2
- STRH r11, [r0], #2
-
-
-pred_lt4_end:
- LDMFD r13!, {r4 - r12, r15}
-
-Table:
- .word inter4_2
- @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 Pred_lt4( +@ Word16 exc[], /* in/out: excitation buffer */ +@ Word16 T0, /* input : integer pitch lag */ +@ Word16 frac, /* input : fraction of lag */ +@ Word16 L_subfr /* input : subframe size */ +@ ) + +@****************************** +@ ARM Register +@****************************** +@ r0 --- exc[] +@ r1 --- T0 +@ r2 --- frac +@ r3 --- L_subfr + + .section .text + .global pred_lt4_asm + .extern inter4_2 + +pred_lt4_asm: + + STMFD r13!, {r4 - r12, r14} + RSB r4, r1, #0 @-T0 + RSB r2, r2, #0 @frac = -frac + ADD r5, r0, r4, LSL #1 @x = exc - T0 + CMP r2, #0 + ADDLT r2, r2, #4 @frac += UP_SAMP + SUBLT r5, r5, #2 @x-- + SUB r5, r5, #30 @x -= 15 + RSB r4, r2, #3 @k = 3 - frac + LDR r6, Table + MOV r8, r4, LSL #6 + @MOV r7, #0 @j = 0 + ADD r8, r6, r8 @ptr2 = &(inter4_2[k][0]) + + MOV r1, r5 + MOV r5, #0x8000 + MOV r14, #21 +@ used register + @r0 --- exc[] r1 --- x r7 --- j r8 --- ptr2 r5 --- 0x8000 +THREE_LOOP: + + @MOV r1, r5 @ptr1 = x + MOV r2, r8 @ptr = ptr2 + LDR r3, [r2], #4 @h[0], h[1] + LDRSH r4, [r1], #2 @x[0] + LDRSH r6, [r1], #2 @x[1] + LDRSH r9, [r1], #2 @x[2] + + SMULBB r10, r4, r3 @x[0] * h[0] + SMULBB r11, r6, r3 @x[1] * h[0] + SMULBB r12, r9, r3 @x[2] * h[0] + + LDRSH r4, [r1], #2 @x[3] + SMLABT r10, r6, r3, r10 @x[1] * h[1] + SMLABT r11, r9, r3, r11 @x[2] * h[1] + SMLABT r12, r4, r3, r12 @x[3] * h[1] + + LDR r3, [r2], #4 @h[2], h[3] + LDRSH r6, [r1], #2 @x[4] + SMLABB r10, r9, r3, r10 @x[2] * h[2] + SMLABB r11, r4, r3, r11 @x[3] * h[2] + SMLABB r12, r6, r3, r12 @x[4] * h[2] + + LDRSH r9, [r1], #2 @x[5] + SMLABT r10, r4, r3, r10 @x[3] * h[3] + SMLABT r11, r6, r3, r11 @x[4] * h[3] + SMLABT r12, r9, r3, r12 @x[5] * h[3] + + LDR r3, [r2], #4 @h[4], h[5] + LDRSH r4, [r1], #2 @x[6] + SMLABB r10, r6, r3, r10 @x[4] * h[4] + SMLABB r11, r9, r3, r11 @x[5] * h[4] + SMLABB r12, r4, r3, r12 @x[6] * h[4] + + LDRSH r6, [r1], #2 @x[7] + SMLABT r10, r9, r3, r10 @x[5] * h[5] + SMLABT r11, r4, r3, r11 @x[6] * h[5] + SMLABT r12, r6, r3, r12 @x[7] * h[5] + + LDR r3, [r2], #4 @h[6], h[7] + LDRSH r9, [r1], #2 @x[8] + SMLABB r10, r4, r3, r10 @x[6] * h[6] + SMLABB r11, r6, r3, r11 @x[7] * h[6] + SMLABB r12, r9, r3, r12 @x[8] * h[6] + + LDRSH r4, [r1], #2 @x[9] + SMLABT r10, r6, r3, r10 @x[7] * h[7] + SMLABT r11, r9, r3, r11 @x[8] * h[7] + SMLABT r12, r4, r3, r12 @x[9] * h[7] + + LDR r3, [r2], #4 @h[8], h[9] + LDRSH r6, [r1], #2 @x[10] + SMLABB r10, r9, r3, r10 @x[8] * h[8] + SMLABB r11, r4, r3, r11 @x[9] * h[8] + SMLABB r12, r6, r3, r12 @x[10] * h[8] + + LDRSH r9, [r1], #2 @x[11] + SMLABT r10, r4, r3, r10 @x[9] * h[9] + SMLABT r11, r6, r3, r11 @x[10] * h[9] + SMLABT r12, r9, r3, r12 @x[11] * h[9] + + LDR r3, [r2], #4 @h[10], h[11] + LDRSH r4, [r1], #2 @x[12] + SMLABB r10, r6, r3, r10 @x[10] * h[10] + SMLABB r11, r9, r3, r11 @x[11] * h[10] + SMLABB r12, r4, r3, r12 @x[12] * h[10] + + LDRSH r6, [r1], #2 @x[13] + SMLABT r10, r9, r3, r10 @x[11] * h[11] + SMLABT r11, r4, r3, r11 @x[12] * h[11] + SMLABT r12, r6, r3, r12 @x[13] * h[11] + + LDR r3, [r2], #4 @h[12], h[13] + LDRSH r9, [r1], #2 @x[14] + SMLABB r10, r4, r3, r10 @x[12] * h[12] + SMLABB r11, r6, r3, r11 @x[13] * h[12] + SMLABB r12, r9, r3, r12 @x[14] * h[12] + + LDRSH r4, [r1], #2 @x[15] + SMLABT r10, r6, r3, r10 @x[13] * h[13] + SMLABT r11, r9, r3, r11 @x[14] * h[13] + SMLABT r12, r4, r3, r12 @x[15] * h[13] + + LDR r3, [r2], #4 @h[14], h[15] + LDRSH r6, [r1], #2 @x[16] + SMLABB r10, r9, r3, r10 @x[14] * h[14] + SMLABB r11, r4, r3, r11 @x[15] * h[14] + SMLABB r12, r6, r3, r12 @x[16] * h[14] + + LDRSH r9, [r1], #2 @x[17] + SMLABT r10, r4, r3, r10 @x[15] * h[15] + SMLABT r11, r6, r3, r11 @x[16] * h[15] + SMLABT r12, r9, r3, r12 @x[17] * h[15] + + LDR r3, [r2], #4 @h[16], h[17] + LDRSH r4, [r1], #2 @x[18] + SMLABB r10, r6, r3, r10 @x[16] * h[16] + SMLABB r11, r9, r3, r11 @x[17] * h[16] + SMLABB r12, r4, r3, r12 @x[18] * h[16] + + LDRSH r6, [r1], #2 @x[19] + SMLABT r10, r9, r3, r10 @x[17] * h[17] + SMLABT r11, r4, r3, r11 @x[18] * h[17] + SMLABT r12, r6, r3, r12 @x[19] * h[17] + + LDR r3, [r2], #4 @h[18], h[19] + LDRSH r9, [r1], #2 @x[20] + SMLABB r10, r4, r3, r10 @x[18] * h[18] + SMLABB r11, r6, r3, r11 @x[19] * h[18] + SMLABB r12, r9, r3, r12 @x[20] * h[18] + + LDRSH r4, [r1], #2 @x[21] + SMLABT r10, r6, r3, r10 @x[19] * h[19] + SMLABT r11, r9, r3, r11 @x[20] * h[19] + SMLABT r12, r4, r3, r12 @x[21] * h[19] + + LDR r3, [r2], #4 @h[20], h[21] + LDRSH r6, [r1], #2 @x[22] + SMLABB r10, r9, r3, r10 @x[20] * h[20] + SMLABB r11, r4, r3, r11 @x[21] * h[20] + SMLABB r12, r6, r3, r12 @x[22] * h[20] + + LDRSH r9, [r1], #2 @x[23] + SMLABT r10, r4, r3, r10 @x[21] * h[21] + SMLABT r11, r6, r3, r11 @x[22] * h[21] + SMLABT r12, r9, r3, r12 @x[23] * h[21] + + LDR r3, [r2], #4 @h[22], h[23] + LDRSH r4, [r1], #2 @x[24] + SMLABB r10, r6, r3, r10 @x[22] * h[22] + SMLABB r11, r9, r3, r11 @x[23] * h[22] + SMLABB r12, r4, r3, r12 @x[24] * h[22] + + LDRSH r6, [r1], #2 @x[25] + SMLABT r10, r9, r3, r10 @x[23] * h[23] + SMLABT r11, r4, r3, r11 @x[24] * h[23] + SMLABT r12, r6, r3, r12 @x[25] * h[23] + + LDR r3, [r2], #4 @h[24], h[25] + LDRSH r9, [r1], #2 @x[26] + SMLABB r10, r4, r3, r10 @x[24] * h[24] + SMLABB r11, r6, r3, r11 @x[25] * h[24] + SMLABB r12, r9, r3, r12 @x[26] * h[24] + + LDRSH r4, [r1], #2 @x[27] + SMLABT r10, r6, r3, r10 @x[25] * h[25] + SMLABT r11, r9, r3, r11 @x[26] * h[25] + SMLABT r12, r4, r3, r12 @x[27] * h[25] + + LDR r3, [r2], #4 @h[26], h[27] + LDRSH r6, [r1], #2 @x[28] + SMLABB r10, r9, r3, r10 @x[26] * h[26] + SMLABB r11, r4, r3, r11 @x[27] * h[26] + SMLABB r12, r6, r3, r12 @x[28] * h[26] + + LDRSH r9, [r1], #2 @x[29] + SMLABT r10, r4, r3, r10 @x[27] * h[27] + SMLABT r11, r6, r3, r11 @x[28] * h[27] + SMLABT r12, r9, r3, r12 @x[29] * h[27] + + LDR r3, [r2], #4 @h[28], h[29] + LDRSH r4, [r1], #2 @x[30] + SMLABB r10, r6, r3, r10 @x[28] * h[28] + SMLABB r11, r9, r3, r11 @x[29] * h[28] + SMLABB r12, r4, r3, r12 @x[30] * h[28] + + LDRSH r6, [r1], #2 @x[31] + SMLABT r10, r9, r3, r10 @x[29] * h[29] + SMLABT r11, r4, r3, r11 @x[30] * h[29] + SMLABT r12, r6, r3, r12 @x[31] * h[29] + + LDR r3, [r2], #4 @h[30], h[31] + LDRSH r9, [r1], #2 @x[32] + SMLABB r10, r4, r3, r10 @x[30] * h[30] + SMLABB r11, r6, r3, r11 @x[31] * h[30] + SMLABB r12, r9, r3, r12 @x[32] * h[30] + + LDRSH r4, [r1], #-60 @x[33] + SMLABT r10, r6, r3, r10 @x[31] * h[31] + SMLABT r11, r9, r3, r11 @x[32] * h[31] + SMLABT r12, r4, r3, r12 @x[33] * h[31] + + @SSAT r10, #32, r10, LSL #2 + @SSAT r11, #32, r11, LSL #2 + @SSAT r12, #32, r12, LSL #2 + + MOV r10, r10, LSL #1 + MOV r11, r11, LSL #1 + MOV r12, r12, LSL #1 + + QADD r10, r10, r10 + QADD r11, r11, r11 + QADD r12, r12, r12 + + QADD r10, r10, r5 + QADD r11, r11, r5 + QADD r12, r12, r5 + + SUBS r14, r14, #1 + + MOV r10, r10, ASR #16 + MOV r11, r11, ASR #16 + MOV r12, r12, ASR #16 + + STRH r10, [r0], #2 + STRH r11, [r0], #2 + STRH r12, [r0], #2 + BNE THREE_LOOP + + MOV r2, r8 @ptr = ptr2 + +Last2LOOP: + + LDR r3, [r2], #4 @h[0], h[1] + LDRSH r4, [r1], #2 @x[0] + LDRSH r6, [r1], #2 @x[1] + LDRSH r9, [r1], #2 @x[2] + + SMULBB r10, r4, r3 @x[0] * h[0] + SMULBB r11, r6, r3 @x[1] * h[0] + + SMLABT r10, r6, r3, r10 @x[1] * h[1] + SMLABT r11, r9, r3, r11 @x[2] * h[1] + + LDR r3, [r2], #4 @h[2], h[3] + LDRSH r4, [r1], #2 @x[3] + LDRSH r6, [r1], #2 @x[4] + + SMLABB r10, r9, r3, r10 @x[2] * h[2] + SMLABB r11, r4, r3, r11 @x[3] * h[2] + + SMLABT r10, r4, r3, r10 @x[3] * h[3] + SMLABT r11, r6, r3, r11 @x[4] * h[3] + + LDR r3, [r2], #4 @h[4], h[5] + LDRSH r9, [r1], #2 @x[5] + LDRSH r4, [r1], #2 @x[6] + + SMLABB r10, r6, r3, r10 @x[4] * h[4] + SMLABB r11, r9, r3, r11 @x[5] * h[4] + + SMLABT r10, r9, r3, r10 @x[5] * h[5] + SMLABT r11, r4, r3, r11 @x[6] * h[5] + + LDR r3, [r2], #4 @h[6], h[7] + LDRSH r6, [r1], #2 @x[7] + LDRSH r9, [r1], #2 @x[8] + + SMLABB r10, r4, r3, r10 @x[6] * h[6] + SMLABB r11, r6, r3, r11 @x[7] * h[6] + + SMLABT r10, r6, r3, r10 @x[7] * h[7] + SMLABT r11, r9, r3, r11 @x[8] * h[7] + + LDR r3, [r2], #4 @h[8], h[9] + LDRSH r4, [r1], #2 @x[9] + LDRSH r6, [r1], #2 @x[10] + + SMLABB r10, r9, r3, r10 @x[8] * h[8] + SMLABB r11, r4, r3, r11 @x[9] * h[8] + + SMLABT r10, r4, r3, r10 @x[9] * h[9] + SMLABT r11, r6, r3, r11 @x[10] * h[9] + + LDR r3, [r2], #4 @h[10], h[11] + LDRSH r9, [r1], #2 @x[11] + LDRSH r4, [r1], #2 @x[12] + + SMLABB r10, r6, r3, r10 @x[10] * h[10] + SMLABB r11, r9, r3, r11 @x[11] * h[10] + + SMLABT r10, r9, r3, r10 @x[11] * h[11] + SMLABT r11, r4, r3, r11 @x[12] * h[11] + + LDR r3, [r2], #4 @h[12], h[13] + LDRSH r6, [r1], #2 @x[13] + LDRSH r9, [r1], #2 @x[14] + + SMLABB r10, r4, r3, r10 @x[12] * h[12] + SMLABB r11, r6, r3, r11 @x[13] * h[12] + + SMLABT r10, r6, r3, r10 @x[13] * h[13] + SMLABT r11, r9, r3, r11 @x[14] * h[13] + + LDR r3, [r2], #4 @h[14], h[15] + LDRSH r4, [r1], #2 @x[15] + LDRSH r6, [r1], #2 @x[16] + + SMLABB r10, r9, r3, r10 @x[14] * h[14] + SMLABB r11, r4, r3, r11 @x[15] * h[14] + + SMLABT r10, r4, r3, r10 @x[15] * h[15] + SMLABT r11, r6, r3, r11 @x[16] * h[15] + + LDR r3, [r2], #4 @h[16], h[17] + LDRSH r9, [r1], #2 @x[17] + LDRSH r4, [r1], #2 @x[18] + + SMLABB r10, r6, r3, r10 @x[16] * h[16] + SMLABB r11, r9, r3, r11 @x[17] * h[16] + + SMLABT r10, r9, r3, r10 @x[17] * h[17] + SMLABT r11, r4, r3, r11 @x[18] * h[17] + + LDR r3, [r2], #4 @h[18], h[19] + LDRSH r6, [r1], #2 @x[19] + LDRSH r9, [r1], #2 @x[20] + + SMLABB r10, r4, r3, r10 @x[18] * h[18] + SMLABB r11, r6, r3, r11 @x[19] * h[18] + + SMLABT r10, r6, r3, r10 @x[19] * h[19] + SMLABT r11, r9, r3, r11 @x[20] * h[19] + + LDR r3, [r2], #4 @h[20], h[21] + LDRSH r4, [r1], #2 @x[21] + LDRSH r6, [r1], #2 @x[22] + + SMLABB r10, r9, r3, r10 @x[20] * h[20] + SMLABB r11, r4, r3, r11 @x[21] * h[20] + + SMLABT r10, r4, r3, r10 @x[21] * h[21] + SMLABT r11, r6, r3, r11 @x[22] * h[21] + + LDR r3, [r2], #4 @h[22], h[23] + LDRSH r9, [r1], #2 @x[23] + LDRSH r4, [r1], #2 @x[24] + + SMLABB r10, r6, r3, r10 @x[22] * h[22] + SMLABB r11, r9, r3, r11 @x[23] * h[22] + + SMLABT r10, r9, r3, r10 @x[23] * h[23] + SMLABT r11, r4, r3, r11 @x[24] * h[23] + + LDR r3, [r2], #4 @h[24], h[25] + LDRSH r6, [r1], #2 @x[25] + LDRSH r9, [r1], #2 @x[26] + + SMLABB r10, r4, r3, r10 @x[24] * h[24] + SMLABB r11, r6, r3, r11 @x[25] * h[24] + + SMLABT r10, r6, r3, r10 @x[25] * h[25] + SMLABT r11, r9, r3, r11 @x[26] * h[25] + + LDR r3, [r2], #4 @h[26], h[27] + LDRSH r4, [r1], #2 @x[27] + LDRSH r6, [r1], #2 @x[28] + + SMLABB r10, r9, r3, r10 @x[26] * h[26] + SMLABB r11, r4, r3, r11 @x[27] * h[26] + + SMLABT r10, r4, r3, r10 @x[27] * h[27] + SMLABT r11, r6, r3, r11 @x[28] * h[27] + + LDR r3, [r2], #4 @h[28], h[29] + LDRSH r9, [r1], #2 @x[29] + LDRSH r4, [r1], #2 @x[30] + + SMLABB r10, r6, r3, r10 @x[28] * h[28] + SMLABB r11, r9, r3, r11 @x[29] * h[28] + + SMLABT r10, r9, r3, r10 @x[29] * h[29] + SMLABT r11, r4, r3, r11 @x[30] * h[29] + + LDR r3, [r2], #4 @h[30], h[31] + LDRSH r6, [r1], #2 @x[31] + LDRSH r9, [r1], #2 @x[32] + + SMLABB r10, r4, r3, r10 @x[30] * h[30] + SMLABB r11, r6, r3, r11 @x[31] * h[30] + + SMLABT r10, r6, r3, r10 @x[31] * h[31] + SMLABT r11, r9, r3, r11 @x[32] * h[31] + + @SSAT r10, #32, r10, LSL #2 + @SSAT r11, #32, r11, LSL #2 + MOV r10, r10, LSL #1 + MOV r11, r11, LSL #1 + + QADD r10, r10, r10 + QADD r11, r11, r11 + + QADD r10, r10, r5 + QADD r11, r11, r5 + + MOV r10, r10, ASR #16 + MOV r11, r11, ASR #16 + + STRH r10, [r0], #2 + STRH r11, [r0], #2 + + +pred_lt4_end: + LDMFD r13!, {r4 - r12, r15} + +Table: + .word inter4_2 + @ENDFUNC + .END + + + + |