Home | History | Annotate | Download | only in armv7
      1 @/******************************************************************************
      2 @ *
      3 @ * Copyright (C) 2018 The Android Open Source Project
      4 @ *
      5 @ * Licensed under the Apache License, Version 2.0 (the "License");
      6 @ * you may not use this file except in compliance with the License.
      7 @ * You may obtain a copy of the License at:
      8 @ *
      9 @ * http://www.apache.org/licenses/LICENSE-2.0
     10 @ *
     11 @ * Unless required by applicable law or agreed to in writing, software
     12 @ * distributed under the License is distributed on an "AS IS" BASIS,
     13 @ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 @ * See the License for the specific language governing permissions and
     15 @ * limitations under the License.
     16 @ *
     17 @ *****************************************************************************
     18 @ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
     19 @*/
     20 
     21 
     22 .text
     23 .p2align 2
     24 .global ixheaacd_conv_ergtoamplitude_armv7
     25 ixheaacd_conv_ergtoamplitude_armv7:
     26 
     27     STMFD           sp!, {r4-r12, r14}
     28 
     29     LDR             R5, [SP, #44]
     30     LDR             R4, [SP, #40]
     31     MOVW            R14, #0x1FF
     32     MOVW            R10, #0x5A82
     33 
     34 LOOP1:
     35 
     36     LDRSH           R6, [R2], #2
     37     LDRSH           R7, [R2], #2
     38     MOV             R12, #0
     39     MOV             R9, #-16
     40     MOVS            R6, R6
     41     BLE             ENDIF1_1
     42     CLZ             R8, R6
     43     SUB             R8, R8, #17
     44     SUB             R7, R7, R8
     45     MOV             R11, R6, LSL R8
     46 
     47     MOV             R11, R11, ASR #5
     48     ANDS            R11, R11, R14
     49 
     50     BIC             R11, R11, #1
     51     LDRH            R12, [R11, R5]
     52 
     53     TST             R7, #1
     54     ADDNE           R7, R7, #3
     55     SMULWBNE        R12, R12, R10
     56 
     57 
     58     MOV             R9, R7, ASR #1
     59 ENDIF1_1:
     60     STRH            R12, [R2, #-4]
     61     STRH            R9, [R2, #-2]
     62 
     63 
     64     LDRSH           R6, [R3], #2
     65     LDRSH           R7, [R3], #2
     66     MOV             R8, #0
     67     MOV             R9, #-16
     68     MOVS            R6, R6
     69     BLE             ENDIF1_2
     70     CLZ             R8, R6
     71     SUB             R8, R8, #17
     72     SUB             R7, R7, R8
     73     MOV             R11, R6, LSL R8
     74     MOV             R11, R11, ASR #5
     75     ANDS            R11, R11, R14
     76 
     77     BIC             R11, R11, #1
     78     LDRH            R8, [R11, R5]
     79     TST             R7, #1
     80     ADDNE           R7, R7, #3
     81 
     82     SMULWBNE        R8, R8, R10
     83 
     84 
     85     MOV             R9, R7, ASR #1
     86 ENDIF1_2:
     87     STRH            R8, [R3, #-4]
     88     STRH            R9, [R3, #-2]
     89 
     90 
     91 
     92     LDRSH           R6, [R4], #2
     93     LDRSH           R7, [R4], #2
     94     MOV             R8, #0
     95     MOV             R9, #-16
     96     MOVS            R6, R6
     97     BLE             ENDIF1_3
     98     CLZ             R8, R6
     99     SUB             R8, R8, #17
    100     SUB             R7, R7, R8
    101     MOV             R11, R6, LSL R8
    102     MOV             R11, R11, ASR #5
    103     ANDS            R11, R11, R14
    104 
    105     BIC             R11, R11, #1
    106     LDRH            R8, [R11, R5]
    107     TST             R7, #1
    108     ADDNE           R7, R7, #3
    109 
    110     SMULWBNE        R8, R8, R10
    111 
    112 
    113     MOV             R9, R7, ASR #1
    114 ENDIF1_3:
    115     STRH            R9, [R4, #-2]
    116 
    117     SUB             R6, R1, R9
    118     SUBS            R6, R6, #4
    119 
    120     RSBLE           R6, R6, #0
    121     MOVGT           R8, R8, ASR R6
    122     MOVLE           R8, R8, LSL R6
    123     STRH            R8, [R4, #-4]
    124 
    125     SUBS            R0, R0, #1
    126     BGT             LOOP1
    127     LDMFD           sp!, {r4-r12, r15}
    128 
    129 
    130 
    131 
    132 
    133