summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/pred_lt4_1_opt.s
diff options
context:
space:
mode:
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.s920
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
+
+
+
+