1*15dc779aSAndroid Build Coastguard Worker@/****************************************************************************** 2*15dc779aSAndroid Build Coastguard Worker@ * 3*15dc779aSAndroid Build Coastguard Worker@ * Copyright (C) 2018 The Android Open Source Project 4*15dc779aSAndroid Build Coastguard Worker@ * 5*15dc779aSAndroid Build Coastguard Worker@ * Licensed under the Apache License, Version 2.0 (the "License"); 6*15dc779aSAndroid Build Coastguard Worker@ * you may not use this file except in compliance with the License. 7*15dc779aSAndroid Build Coastguard Worker@ * You may obtain a copy of the License at: 8*15dc779aSAndroid Build Coastguard Worker@ * 9*15dc779aSAndroid Build Coastguard Worker@ * http://www.apache.org/licenses/LICENSE-2.0 10*15dc779aSAndroid Build Coastguard Worker@ * 11*15dc779aSAndroid Build Coastguard Worker@ * Unless required by applicable law or agreed to in writing, software 12*15dc779aSAndroid Build Coastguard Worker@ * distributed under the License is distributed on an "AS IS" BASIS, 13*15dc779aSAndroid Build Coastguard Worker@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*15dc779aSAndroid Build Coastguard Worker@ * See the License for the specific language governing permissions and 15*15dc779aSAndroid Build Coastguard Worker@ * limitations under the License. 16*15dc779aSAndroid Build Coastguard Worker@ * 17*15dc779aSAndroid Build Coastguard Worker@ ***************************************************************************** 18*15dc779aSAndroid Build Coastguard Worker@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*15dc779aSAndroid Build Coastguard Worker@*/ 20*15dc779aSAndroid Build Coastguard Worker 21*15dc779aSAndroid Build Coastguard Worker 22*15dc779aSAndroid Build Coastguard Worker .code 32 23*15dc779aSAndroid Build Coastguard Worker .eabi_attribute 24, 1 @Tag_ABI_align_needed 24*15dc779aSAndroid Build Coastguard Worker .eabi_attribute 25, 1 @Tag_ABI_align_preserved 25*15dc779aSAndroid Build Coastguard Worker.text 26*15dc779aSAndroid Build Coastguard Worker.p2align 2 27*15dc779aSAndroid Build Coastguard Worker .global ixheaacd_shiftrountine 28*15dc779aSAndroid Build Coastguard Worker .type ixheaacd_shiftrountine, %function 29*15dc779aSAndroid Build Coastguard Workerixheaacd_shiftrountine: 30*15dc779aSAndroid Build Coastguard Worker CMP r3, #0 31*15dc779aSAndroid Build Coastguard Worker STMFD sp!, {r4-r7, r12} 32*15dc779aSAndroid Build Coastguard Worker MOV r12, #0x1f 33*15dc779aSAndroid Build Coastguard Worker BGE SROUTINE_L1 34*15dc779aSAndroid Build Coastguard Worker RSB r3, r3, #0 35*15dc779aSAndroid Build Coastguard Worker CMP r3, r12 36*15dc779aSAndroid Build Coastguard Worker MOVGT r3, r12 37*15dc779aSAndroid Build Coastguard Worker SUBS r2, r2, #2 38*15dc779aSAndroid Build Coastguard Worker@ LDMMIFD sp!, {r4-r7, r12} 39*15dc779aSAndroid Build Coastguard Worker LDMFDMI sp!, {r4-r7, r12} 40*15dc779aSAndroid Build Coastguard Worker BXMI lr 41*15dc779aSAndroid Build Coastguard WorkerSROUTINE_L2: 42*15dc779aSAndroid Build Coastguard Worker LDR r12, [r0, #0] 43*15dc779aSAndroid Build Coastguard Worker LDR r4, [r1, #0] 44*15dc779aSAndroid Build Coastguard Worker MOV r12, r12, ASR r3 45*15dc779aSAndroid Build Coastguard Worker MOV r4, r4, ASR r3 46*15dc779aSAndroid Build Coastguard Worker STR r12, [r0], #4 47*15dc779aSAndroid Build Coastguard Worker STR r4, [r1], #4 48*15dc779aSAndroid Build Coastguard Worker 49*15dc779aSAndroid Build Coastguard Worker LDR r12, [r0, #0] 50*15dc779aSAndroid Build Coastguard Worker LDR r4, [r1, #0] 51*15dc779aSAndroid Build Coastguard Worker MOV r12, r12, ASR r3 52*15dc779aSAndroid Build Coastguard Worker MOV r4, r4, ASR r3 53*15dc779aSAndroid Build Coastguard Worker SUBS r2, r2, #2 54*15dc779aSAndroid Build Coastguard Worker STR r12, [r0], #4 55*15dc779aSAndroid Build Coastguard Worker STR r4, [r1], #4 56*15dc779aSAndroid Build Coastguard Worker 57*15dc779aSAndroid Build Coastguard Worker BPL SROUTINE_L2 58*15dc779aSAndroid Build Coastguard Worker LDMFD sp!, {r4-r7, r12} 59*15dc779aSAndroid Build Coastguard Worker BX lr 60*15dc779aSAndroid Build Coastguard WorkerSROUTINE_L1: 61*15dc779aSAndroid Build Coastguard Worker SUBS r4, r2, #2 62*15dc779aSAndroid Build Coastguard Worker RSB r2, r3, #0x1f 63*15dc779aSAndroid Build Coastguard Worker@ LDMMIFD sp!, {r4-r7, r12} 64*15dc779aSAndroid Build Coastguard Worker LDMFDMI sp!, {r4-r7, r12} 65*15dc779aSAndroid Build Coastguard Worker BXMI lr 66*15dc779aSAndroid Build Coastguard WorkerSROUTINE_L3: 67*15dc779aSAndroid Build Coastguard Worker LDR r12, [r0, #0] 68*15dc779aSAndroid Build Coastguard Worker LDR r5, [r1, #0] 69*15dc779aSAndroid Build Coastguard Worker 70*15dc779aSAndroid Build Coastguard Worker MOVS r7, r12, ASR r2 71*15dc779aSAndroid Build Coastguard Worker CMNLT r7, #1 72*15dc779aSAndroid Build Coastguard Worker MOVLT r6, #0x80000000 73*15dc779aSAndroid Build Coastguard Worker MVNGT r6, #0x80000000 74*15dc779aSAndroid Build Coastguard Worker MOVEQ r6, r12, LSL r3 75*15dc779aSAndroid Build Coastguard Worker 76*15dc779aSAndroid Build Coastguard Worker MOVS r7, r5, ASR r2 77*15dc779aSAndroid Build Coastguard Worker CMNLT r7, #1 78*15dc779aSAndroid Build Coastguard Worker MOVLT r12, #0x80000000 79*15dc779aSAndroid Build Coastguard Worker MVNGT r12, #0x80000000 80*15dc779aSAndroid Build Coastguard Worker MOVEQ r12, r5, LSL r3 81*15dc779aSAndroid Build Coastguard Worker STR r6, [r0], #4 82*15dc779aSAndroid Build Coastguard Worker STR r12, [r1], #4 83*15dc779aSAndroid Build Coastguard Worker 84*15dc779aSAndroid Build Coastguard Worker LDR r12, [r0, #0] 85*15dc779aSAndroid Build Coastguard Worker LDR r5, [r1, #0] 86*15dc779aSAndroid Build Coastguard Worker 87*15dc779aSAndroid Build Coastguard Worker MOVS r7, r12, ASR r2 88*15dc779aSAndroid Build Coastguard Worker CMNLT r7, #1 89*15dc779aSAndroid Build Coastguard Worker MOVLT r6, #0x80000000 90*15dc779aSAndroid Build Coastguard Worker MVNGT r6, #0x80000000 91*15dc779aSAndroid Build Coastguard Worker MOVEQ r6, r12, LSL r3 92*15dc779aSAndroid Build Coastguard Worker 93*15dc779aSAndroid Build Coastguard Worker MOVS r7, r5, ASR r2 94*15dc779aSAndroid Build Coastguard Worker CMNLT r7, #1 95*15dc779aSAndroid Build Coastguard Worker MOVLT r12, #0x80000000 96*15dc779aSAndroid Build Coastguard Worker MVNGT r12, #0x80000000 97*15dc779aSAndroid Build Coastguard Worker MOVEQ r12, r5, LSL r3 98*15dc779aSAndroid Build Coastguard Worker SUBS r4, r4, #2 99*15dc779aSAndroid Build Coastguard Worker STR r6, [r0], #4 100*15dc779aSAndroid Build Coastguard Worker STR r12, [r1], #4 101*15dc779aSAndroid Build Coastguard Worker 102*15dc779aSAndroid Build Coastguard Worker BPL SROUTINE_L3 103*15dc779aSAndroid Build Coastguard Worker LDMFD sp!, {r4-r7, r12} 104*15dc779aSAndroid Build Coastguard Worker BX lr 105*15dc779aSAndroid Build Coastguard Worker 106*15dc779aSAndroid Build Coastguard Worker 107