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@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 18e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ File: band_nrg_v5.s 19e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ 20e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ Content: CalcBandEnergy and CalcBandEnergyMS function armv5 assemble 21e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ 22e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 23e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 24e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard .section .text 25e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 26e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard .global CalcBandEnergy 27e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 28e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardCalcBandEnergy: 29b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard stmdb sp!, {r4 - r11, lr} 30b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 31b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard mov r2, r2, lsl #16 32e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r12, [r13, #36] 33e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard mov r9, #0 34b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard mov r5, r2, asr #16 35b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard mov r4, #0 36b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard cmp r5, #0 37b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard ble L212 38e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 39e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardL22: 40b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard mov r2, r4, lsl #1 41b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard ldrsh r10, [r1, r2] 42b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard add r11, r1, r2 43b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard ldrsh r2, [r11, #2] 44b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard mov r14, #0 45b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard cmp r10, r2 46b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard bge L28 47b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 48e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardL23: 49b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard ldr r11, [r0, +r10, lsl #2] 50b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard add r10, r10, #1 51b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard ldr r6, [r0, +r10, lsl #2] 52e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard smull r11, r7, r11, r11 53b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard add r10, r10, #1 54e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard smull r6, r8, r6, r6 55e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r11, [r0, +r10, lsl #2] 56e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r14, r14, r7 57e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard add r10, r10, #1 58e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard smull r11, r7, r11, r11 59e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r6, [r0, +r10, lsl #2] 60e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r14, r14, r8 61e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard smull r6, r8, r6, r6 62b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard add r10, r10, #1 63e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r14, r14, r7 64e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard cmp r10, r2 65e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r14, r14, r8 66b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard blt L23 67e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 68b676a05348e4c516fa8b57e33b10548e6142c3f8Mans RullgardL28: 69e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r14, r14, r14 70e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard str r14, [r3, +r4, lsl #2] 71b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard add r4, r4, #1 72e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r9, r9, r14 73b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard cmp r4, r5 74e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 75b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard blt L22 76e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 77b676a05348e4c516fa8b57e33b10548e6142c3f8Mans RullgardL212: 78b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard str r9, [r12, #0] 79e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldmia sp!, {r4 - r11, pc} 80b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 81e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard @ENDP ; |CalcBandEnergy| 82b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 83e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard .global CalcBandEnergyMS 84e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 85e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardCalcBandEnergyMS: 86e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard stmdb sp!, {r4 - r11, lr} 87e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard sub r13, r13, #24 88b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 89b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard mov r12, #0 90b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard mov r3, r3, lsl #16 91b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard mov r14, #0 92b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard mov r3, r3, asr #16 93b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard cmp r3, #0 94b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard mov r4, #0 95b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard ble L315 96b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 97b676a05348e4c516fa8b57e33b10548e6142c3f8Mans RullgardL32: 98e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard mov r5, r4, lsl #1 99e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard mov r6, #0 100e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldrsh r10, [r2, r5] 101e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard add r5, r2, r5 102e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard mov r7, #0 103b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard ldrsh r11, [r5, #2] 104b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard cmp r10, r11 105b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard bge L39 106e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 107e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard str r3, [r13, #4] 108e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard str r4, [r13, #8] 109e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard str r12, [r13, #12] 110e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard str r14, [r13, #16] 111e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 112b676a05348e4c516fa8b57e33b10548e6142c3f8Mans RullgardL33: 113b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard ldr r8, [r0, +r10, lsl #2] 114e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r9, [r1, +r10, lsl #2] 115e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard mov r8, r8, asr #1 116e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard add r10, r10, #1 117e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard mov r9, r9, asr #1 118e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 119b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard ldr r12, [r0, +r10, lsl #2] 120b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard add r5, r8, r9 121e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r14, [r1, +r10, lsl #2] 122e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard sub r8, r8, r9 123e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 124b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard smull r5, r3, r5, r5 125e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard mov r12, r12, asr #1 126b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard smull r8, r4, r8, r8 127e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard mov r14, r14, asr #1 128e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 129e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r6, r6, r3 130e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard add r5, r12, r14 131e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r7, r7, r4 132e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard sub r8, r12, r14 133e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 134b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard smull r5, r3, r5, r5 135e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard add r10, r10, #1 136b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard smull r8, r4, r8, r8 137b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 138e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r6, r6, r3 139e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r7, r7, r4 140e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 141b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard ldr r8, [r0, +r10, lsl #2] 142e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r9, [r1, +r10, lsl #2] 143e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard mov r8, r8, asr #1 144e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard add r10, r10, #1 145e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard mov r9, r9, asr #1 146e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 147b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard ldr r12, [r0, +r10, lsl #2] 148b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard add r5, r8, r9 149e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r14, [r1, +r10, lsl #2] 150e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard sub r8, r8, r9 151e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 152b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard smull r5, r3, r5, r5 153e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard mov r12, r12, asr #1 154b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard smull r8, r4, r8, r8 155e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard mov r14, r14, asr #1 156e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 157e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r6, r6, r3 158e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard add r5, r12, r14 159e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r7, r7, r4 160e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard sub r8, r12, r14 161e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 162b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard smull r5, r3, r5, r5 163e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard add r10, r10, #1 164b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard smull r8, r4, r8, r8 165b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 166e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r6, r6, r3 167e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r7, r7, r4 168e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 169e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard cmp r10, r11 170b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 171e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard blt L33 172e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 173e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r3, [r13, #4] 174b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard ldr r4, [r13, #8] 175e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r12, [r13, #12] 176e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r14, [r13, #16] 177b676a05348e4c516fa8b57e33b10548e6142c3f8Mans RullgardL39: 178e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r6, r6, r6 179b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard qadd r7, r7, r7 180b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 181e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r8, [r13, #60] 182e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r9, [r13, #68] 183e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 184e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r12, r12, r6 185e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard qadd r14, r14, r7 186b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 187b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard str r6, [r8, +r4, lsl #2] 188b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard str r7, [r9, +r4, lsl #2] 189b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard 190e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard add r4, r4, #1 191e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard cmp r4, r3 192b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard blt L32 193e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 194e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardL315: 195e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r8, [r13, #64] 196e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldr r9, [r13, #72] 197e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard str r12, [r8, #0] 198e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard str r14, [r9, #0] 199e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 200e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard add r13, r13, #24 201e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ldmia sp!, {r4 - r11, pc} 202e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard @ENDP ; |CalcBandEnergyMS| 203e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 204e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard .end 205