1e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@/* 2e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** Copyright 2003-2010, VisualOn, Inc. 3e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** 4e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** Licensed under the Apache License, Version 2.0 (the "License"); 5e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** you may not use this file except in compliance with the License. 6e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** You may obtain a copy of the License at 7e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** 8e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** http://www.apache.org/licenses/LICENSE-2.0 9e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** 10e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** Unless required by applicable law or agreed to in writing, software 11e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** distributed under the License is distributed on an "AS IS" BASIS, 12e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** See the License for the specific language governing permissions and 14e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** limitations under the License. 15e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ */ 16e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ 17e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@void Pred_lt4( 18e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ Word16 exc[], /* in/out: excitation buffer */ 19e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ Word16 T0, /* input : integer pitch lag */ 20e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ Word16 frac, /* input : fraction of lag */ 21e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ Word16 L_subfr /* input : subframe size */ 22e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ) 23e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 24e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@****************************** 25e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ARM Register 26e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@****************************** 27e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ r0 --- exc[] 28e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ r1 --- T0 29e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ r2 --- frac 30e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ r3 --- L_subfr 31e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 32e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard .section .text 33e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard .global pred_lt4_asm 34e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard .extern inter4_2 35e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 36e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgardpred_lt4_asm: 37e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 38b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard STMFD r13!, {r4 - r12, r14} 39e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard RSB r4, r1, #0 @-T0 40e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard RSB r2, r2, #0 @frac = -frac 41e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ADD r5, r0, r4, LSL #1 @x = exc - T0 42e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard CMP r2, #0 43e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ADDLT r2, r2, #4 @frac += UP_SAMP 44e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SUBLT r5, r5, #2 @x-- 45e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SUB r5, r5, #30 @x -= 15 46e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard RSB r4, r2, #3 @k = 3 - frac 47c40e9b86092e67f245ba8f05244f578b26e49fe2Nick Kralevich ADRL r8, Table 48c40e9b86092e67f245ba8f05244f578b26e49fe2Nick Kralevich LDR r6, [r8] 49c40e9b86092e67f245ba8f05244f578b26e49fe2Nick Kralevich ADD r6, r8 50b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard MOV r8, r4, LSL #6 51e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard @MOV r7, #0 @j = 0 52e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ADD r8, r6, r8 @ptr2 = &(inter4_2[k][0]) 53e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 54e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r1, r5 55e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r5, #0x8000 56e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r14, #21 57e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ used register 58e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard @r0 --- exc[] r1 --- x r7 --- j r8 --- ptr2 r5 --- 0x8000 59e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardTHREE_LOOP: 60e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 61e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard @MOV r1, r5 @ptr1 = x 62e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r2, r8 @ptr = ptr2 63e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[0], h[1] 64e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[0] 65e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[1] 66e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[2] 67e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 68b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard SMULBB r10, r4, r3 @x[0] * h[0] 69e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMULBB r11, r6, r3 @x[1] * h[0] 70e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMULBB r12, r9, r3 @x[2] * h[0] 71e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 72e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[3] 73e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r6, r3, r10 @x[1] * h[1] 74e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r9, r3, r11 @x[2] * h[1] 75e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r4, r3, r12 @x[3] * h[1] 76e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 77e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[2], h[3] 78e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[4] 79e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r9, r3, r10 @x[2] * h[2] 80e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r4, r3, r11 @x[3] * h[2] 81e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r6, r3, r12 @x[4] * h[2] 82e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 83e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[5] 84e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r4, r3, r10 @x[3] * h[3] 85e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r6, r3, r11 @x[4] * h[3] 86e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r9, r3, r12 @x[5] * h[3] 87e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 88e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[4], h[5] 89e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[6] 90e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r6, r3, r10 @x[4] * h[4] 91e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r9, r3, r11 @x[5] * h[4] 92e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r4, r3, r12 @x[6] * h[4] 93e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 94e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[7] 95e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r9, r3, r10 @x[5] * h[5] 96e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r4, r3, r11 @x[6] * h[5] 97e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r6, r3, r12 @x[7] * h[5] 98e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 99e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[6], h[7] 100e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[8] 101e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r4, r3, r10 @x[6] * h[6] 102e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r6, r3, r11 @x[7] * h[6] 103e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r9, r3, r12 @x[8] * h[6] 104e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 105e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[9] 106e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r6, r3, r10 @x[7] * h[7] 107e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r9, r3, r11 @x[8] * h[7] 108e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r4, r3, r12 @x[9] * h[7] 109e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 110e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[8], h[9] 111e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[10] 112e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r9, r3, r10 @x[8] * h[8] 113e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r4, r3, r11 @x[9] * h[8] 114e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r6, r3, r12 @x[10] * h[8] 115e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 116e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[11] 117e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r4, r3, r10 @x[9] * h[9] 118e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r6, r3, r11 @x[10] * h[9] 119e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r9, r3, r12 @x[11] * h[9] 120e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 121e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[10], h[11] 122e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[12] 123e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r6, r3, r10 @x[10] * h[10] 124e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r9, r3, r11 @x[11] * h[10] 125e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r4, r3, r12 @x[12] * h[10] 126e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 127e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[13] 128e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r9, r3, r10 @x[11] * h[11] 129e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r4, r3, r11 @x[12] * h[11] 130e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r6, r3, r12 @x[13] * h[11] 131e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 132e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[12], h[13] 133e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[14] 134e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r4, r3, r10 @x[12] * h[12] 135e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r6, r3, r11 @x[13] * h[12] 136e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r9, r3, r12 @x[14] * h[12] 137e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 138e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[15] 139e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r6, r3, r10 @x[13] * h[13] 140e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r9, r3, r11 @x[14] * h[13] 141e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r4, r3, r12 @x[15] * h[13] 142e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 143e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[14], h[15] 144e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[16] 145e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r9, r3, r10 @x[14] * h[14] 146e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r4, r3, r11 @x[15] * h[14] 147e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r6, r3, r12 @x[16] * h[14] 148e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 149e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[17] 150e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r4, r3, r10 @x[15] * h[15] 151e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r6, r3, r11 @x[16] * h[15] 152e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r9, r3, r12 @x[17] * h[15] 153e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 154e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[16], h[17] 155e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[18] 156e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r6, r3, r10 @x[16] * h[16] 157e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r9, r3, r11 @x[17] * h[16] 158e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r4, r3, r12 @x[18] * h[16] 159e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 160e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[19] 161e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r9, r3, r10 @x[17] * h[17] 162e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r4, r3, r11 @x[18] * h[17] 163e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r6, r3, r12 @x[19] * h[17] 164e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 165e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[18], h[19] 166e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[20] 167e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r4, r3, r10 @x[18] * h[18] 168e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r6, r3, r11 @x[19] * h[18] 169e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r9, r3, r12 @x[20] * h[18] 170e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 171e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[21] 172e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r6, r3, r10 @x[19] * h[19] 173e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r9, r3, r11 @x[20] * h[19] 174e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r4, r3, r12 @x[21] * h[19] 175e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 176e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[20], h[21] 177e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[22] 178e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r9, r3, r10 @x[20] * h[20] 179e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r4, r3, r11 @x[21] * h[20] 180e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r6, r3, r12 @x[22] * h[20] 181e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 182e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[23] 183e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r4, r3, r10 @x[21] * h[21] 184e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r6, r3, r11 @x[22] * h[21] 185e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r9, r3, r12 @x[23] * h[21] 186e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 187e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[22], h[23] 188e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[24] 189e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r6, r3, r10 @x[22] * h[22] 190e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r9, r3, r11 @x[23] * h[22] 191e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r4, r3, r12 @x[24] * h[22] 192e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 193e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[25] 194e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r9, r3, r10 @x[23] * h[23] 195e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r4, r3, r11 @x[24] * h[23] 196e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r6, r3, r12 @x[25] * h[23] 197e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 198e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[24], h[25] 199e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[26] 200e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r4, r3, r10 @x[24] * h[24] 201e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r6, r3, r11 @x[25] * h[24] 202e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r9, r3, r12 @x[26] * h[24] 203e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 204e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[27] 205e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r6, r3, r10 @x[25] * h[25] 206e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r9, r3, r11 @x[26] * h[25] 207e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r4, r3, r12 @x[27] * h[25] 208e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 209e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[26], h[27] 210e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[28] 211e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r9, r3, r10 @x[26] * h[26] 212e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r4, r3, r11 @x[27] * h[26] 213e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r6, r3, r12 @x[28] * h[26] 214e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 215e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[29] 216e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r4, r3, r10 @x[27] * h[27] 217e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r6, r3, r11 @x[28] * h[27] 218e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r9, r3, r12 @x[29] * h[27] 219e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 220e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[28], h[29] 221e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[30] 222e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r6, r3, r10 @x[28] * h[28] 223e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r9, r3, r11 @x[29] * h[28] 224e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r4, r3, r12 @x[30] * h[28] 225e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 226e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[31] 227e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r9, r3, r10 @x[29] * h[29] 228e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r4, r3, r11 @x[30] * h[29] 229e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r6, r3, r12 @x[31] * h[29] 230e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 231e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[30], h[31] 232e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[32] 233e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r4, r3, r10 @x[30] * h[30] 234e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r6, r3, r11 @x[31] * h[30] 235e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r12, r9, r3, r12 @x[32] * h[30] 236e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 237e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #-60 @x[33] 238e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r6, r3, r10 @x[31] * h[31] 239e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r9, r3, r11 @x[32] * h[31] 240e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r12, r4, r3, r12 @x[33] * h[31] 241e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 242e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard @SSAT r10, #32, r10, LSL #2 243e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard @SSAT r11, #32, r11, LSL #2 244e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard @SSAT r12, #32, r12, LSL #2 245e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 246e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r10, r10, LSL #1 247e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r11, r11, LSL #1 248e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r12, r12, LSL #1 249e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 250e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard QADD r10, r10, r10 251e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard QADD r11, r11, r11 252e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard QADD r12, r12, r12 253e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 254e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard QADD r10, r10, r5 255e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard QADD r11, r11, r5 256e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard QADD r12, r12, r5 257e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 258e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SUBS r14, r14, #1 259e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 260e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r10, r10, ASR #16 261e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r11, r11, ASR #16 262e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r12, r12, ASR #16 263e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 264e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard STRH r10, [r0], #2 265e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard STRH r11, [r0], #2 266e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard STRH r12, [r0], #2 267e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard BNE THREE_LOOP 268e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 269e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r2, r8 @ptr = ptr2 270e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 271e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardLast2LOOP: 272e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 273e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[0], h[1] 274e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[0] 275e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[1] 276e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[2] 277e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 278e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMULBB r10, r4, r3 @x[0] * h[0] 279e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMULBB r11, r6, r3 @x[1] * h[0] 280e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 281e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r6, r3, r10 @x[1] * h[1] 282e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r9, r3, r11 @x[2] * h[1] 283e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 284e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[2], h[3] 285e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[3] 286e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[4] 287e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 288e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r9, r3, r10 @x[2] * h[2] 289e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r4, r3, r11 @x[3] * h[2] 290b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 291e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r4, r3, r10 @x[3] * h[3] 292e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r6, r3, r11 @x[4] * h[3] 293e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 294e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[4], h[5] 295e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[5] 296e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[6] 297e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 298e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r6, r3, r10 @x[4] * h[4] 299e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r9, r3, r11 @x[5] * h[4] 300e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 301e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r9, r3, r10 @x[5] * h[5] 302e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r4, r3, r11 @x[6] * h[5] 303e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 304e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[6], h[7] 305e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[7] 306e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[8] 307e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 308e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r4, r3, r10 @x[6] * h[6] 309e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r6, r3, r11 @x[7] * h[6] 310e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 311e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r6, r3, r10 @x[7] * h[7] 312e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r9, r3, r11 @x[8] * h[7] 313e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 314e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[8], h[9] 315e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[9] 316e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[10] 317e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 318e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r9, r3, r10 @x[8] * h[8] 319e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r4, r3, r11 @x[9] * h[8] 320e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 321e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r4, r3, r10 @x[9] * h[9] 322e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r6, r3, r11 @x[10] * h[9] 323e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 324e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[10], h[11] 325e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[11] 326e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[12] 327e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 328e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r6, r3, r10 @x[10] * h[10] 329e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r9, r3, r11 @x[11] * h[10] 330e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 331e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r9, r3, r10 @x[11] * h[11] 332e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r4, r3, r11 @x[12] * h[11] 333e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 334e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[12], h[13] 335e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[13] 336e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[14] 337e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 338e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r4, r3, r10 @x[12] * h[12] 339e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r6, r3, r11 @x[13] * h[12] 340e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 341e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r6, r3, r10 @x[13] * h[13] 342e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r9, r3, r11 @x[14] * h[13] 343e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 344e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[14], h[15] 345e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[15] 346e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[16] 347e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 348e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r9, r3, r10 @x[14] * h[14] 349e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r4, r3, r11 @x[15] * h[14] 350e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 351e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r4, r3, r10 @x[15] * h[15] 352e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r6, r3, r11 @x[16] * h[15] 353e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 354e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[16], h[17] 355e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[17] 356e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[18] 357e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 358e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r6, r3, r10 @x[16] * h[16] 359e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r9, r3, r11 @x[17] * h[16] 360e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 361e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r9, r3, r10 @x[17] * h[17] 362e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r4, r3, r11 @x[18] * h[17] 363e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 364e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[18], h[19] 365e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[19] 366e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[20] 367e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 368e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r4, r3, r10 @x[18] * h[18] 369e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r6, r3, r11 @x[19] * h[18] 370e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 371e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r6, r3, r10 @x[19] * h[19] 372e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r9, r3, r11 @x[20] * h[19] 373e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 374e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[20], h[21] 375e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[21] 376e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[22] 377e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 378e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r9, r3, r10 @x[20] * h[20] 379e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r4, r3, r11 @x[21] * h[20] 380e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 381e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r4, r3, r10 @x[21] * h[21] 382e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r6, r3, r11 @x[22] * h[21] 383e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 384e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[22], h[23] 385e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[23] 386e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[24] 387e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 388e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r6, r3, r10 @x[22] * h[22] 389e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r9, r3, r11 @x[23] * h[22] 390e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 391e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r9, r3, r10 @x[23] * h[23] 392e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r4, r3, r11 @x[24] * h[23] 393e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 394e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[24], h[25] 395e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[25] 396e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[26] 397e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 398e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r4, r3, r10 @x[24] * h[24] 399e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r6, r3, r11 @x[25] * h[24] 400e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 401e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r6, r3, r10 @x[25] * h[25] 402e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r9, r3, r11 @x[26] * h[25] 403e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 404e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[26], h[27] 405e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[27] 406e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[28] 407e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 408e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r9, r3, r10 @x[26] * h[26] 409e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r4, r3, r11 @x[27] * h[26] 410e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 411e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r4, r3, r10 @x[27] * h[27] 412e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r6, r3, r11 @x[28] * h[27] 413e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 414e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[28], h[29] 415e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[29] 416e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r4, [r1], #2 @x[30] 417e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 418e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r6, r3, r10 @x[28] * h[28] 419e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r9, r3, r11 @x[29] * h[28] 420e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 421e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r9, r3, r10 @x[29] * h[29] 422e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r4, r3, r11 @x[30] * h[29] 423e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 424e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDR r3, [r2], #4 @h[30], h[31] 425e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r6, [r1], #2 @x[31] 426e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDRSH r9, [r1], #2 @x[32] 427e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 428e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r10, r4, r3, r10 @x[30] * h[30] 429e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABB r11, r6, r3, r11 @x[31] * h[30] 430e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 431e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r10, r6, r3, r10 @x[31] * h[31] 432e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard SMLABT r11, r9, r3, r11 @x[32] * h[31] 433e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 434e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard @SSAT r10, #32, r10, LSL #2 435e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard @SSAT r11, #32, r11, LSL #2 436e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r10, r10, LSL #1 437e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r11, r11, LSL #1 438e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 439e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard QADD r10, r10, r10 440b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard QADD r11, r11, r11 441e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 442e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard QADD r10, r10, r5 443e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard QADD r11, r11, r5 444e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 445e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r10, r10, ASR #16 446e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard MOV r11, r11, ASR #16 447e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 448e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard STRH r10, [r0], #2 449e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard STRH r11, [r0], #2 450e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 451e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 452e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgardpred_lt4_end: 453e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard LDMFD r13!, {r4 - r12, r15} 454e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 455e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardTable: 456c40e9b86092e67f245ba8f05244f578b26e49fe2Nick Kralevich .word inter4_2-Table 457e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard @ENDFUNC 458e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard .END 459e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 460e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 461e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 462e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 463