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_decorr_filter2_armv7
     25     @PRESERVE8
     26 
     27 ixheaacd_decorr_filter2_armv7:
     28 
     29     STMFD           r13!, {r4-r12, r14}
     30     LDR             r12, [r0, #24]
     31 
     32     LDRSH           r4, [r0, #12]
     33     LDRSH           r5, [r0, #14]
     34     LDRSH           r6, [r0, #16]
     35 
     36     MOV             r11, #384
     37     LDR             r9, [r13, #44]
     38     LDR             r14, [r13, #48]
     39     LDR             r10, [r13, #40]
     40 
     41     MLA             r4, r11, r4, r12
     42 
     43     MLA             r5, r11, r5, r12
     44 
     45     MLA             r6, r11, r6, r12
     46 
     47 
     48     ADD             r11, r9, #0x0150
     49     LDRH            r7, [r0, #28]
     50     ADD             r2, r2, #12
     51     ADD             r10, r10, #12
     52 
     53     ADD             r5, r5, #140
     54 
     55     ADD             r6, r6, #268
     56 
     57 
     58     STR             r10, [r13, #-4]!
     59     STR             r2, [r13, #-4]!
     60     LDR             r8, [r0]
     61     ADD             r11, r11, #0x0c
     62 
     63     MOV             r0, #128
     64     ADD             r2, r9, #0x012
     65     ADD             r12, r11, #0x0a0
     66 
     67 
     68     SUB             r10, r11, #0x03A
     69     ADD             r3, r3, #12
     70     MLA             r0, r7, r0, r8
     71 
     72 
     73 
     74 
     75     STR             r10, [r13, #-8]!
     76     STR             r3, [r13, #-4]!
     77     STR             r14, [r13, #-4]!
     78     ADD             r1, r1, #12
     79     ADD             r0, r0, #12
     80     ADD             r4, r4, #12
     81 
     82 
     83 
     84 
     85 
     86 
     87 DE_COR_FIL2_LOOP1:
     88 
     89 
     90 
     91 
     92 
     93 
     94 
     95 
     96 
     97 
     98 
     99 
    100 
    101 
    102 
    103 
    104 
    105 
    106 
    107 
    108 
    109 
    110 
    111 
    112 
    113 
    114 
    115 
    116 
    117 
    118 
    119 
    120 
    121 
    122 
    123 
    124     ADD             r12, r12, #12
    125 
    126 
    127     ADD             r11, r11, #12
    128 
    129 
    130 
    131 
    132     MOV             r9, #20
    133 
    134     STR             r9, [r13, #-4]!
    135     STR             r1, [r13, #16]
    136 
    137 
    138 DE_COR_FIL2_LOOP2:
    139 
    140     LDR             r7, [r0]
    141     LDR             r8, [r11], #4
    142     LDR             r14, [r1], #4
    143 
    144     SMULBT          r3, r7, r8
    145     SMULBB          r9, r7, r8
    146 
    147 
    148     STR             r1, [r13, #16]
    149 
    150     SMULTT          r10, r7, r8
    151 
    152     LDR             r1, [r13, #20]
    153 
    154     SMLATB          r3, r7, r8, r3
    155 
    156     MOV             r8, #0x8000
    157 
    158     QSUB            r9, r9, r10
    159     LDR             r10, [r1], #4
    160     QADD            r14, r14, r8
    161 
    162     STR             r1, [r13, #20]
    163     QADD            r1, r10, r8
    164 
    165     MOV             r7, r9, asr #15
    166     MOV             r8, r3, asr #15
    167 
    168     LDR             r10, [r12], #4
    169     LDR             r9, [r4]
    170 
    171 
    172     MOV             r14, r14, asr #16
    173     MOV             r1, r1, asr #16
    174 
    175     SMULBT          r3, r10, r9
    176 
    177 
    178     STRH            r14, [r0], #2
    179     STRH            r1, [r0], #2
    180 
    181 
    182 
    183 
    184 
    185     SMULTT          r14, r10, r9
    186     SMLATB          r3, r10, r9, r3
    187     SMULBB          r9, r10, r9
    188 
    189     LDRSH           r10, [r2], #2
    190     MOV             r3, r3, asr #15
    191     QSUB            r9, r9, r14
    192 
    193     SMULBB          r14, r10, r8
    194     SMULBB          r1, r10, r7
    195     MOV             r9, r9, asr #15
    196 
    197     SUB             r3, r3, r14, asr #15
    198     SUB             r9, r9, r1, asr #15
    199 
    200     SMULBB          r14, r9, r10
    201     SMULBB          r1, r3, r10
    202 
    203     LDR             r10, [r12, #124 ]
    204 
    205     ADD             r14, r7, r14, asr #15
    206     LDR             r7, [r5]
    207 
    208     ADD             r1, r8, r1, asr #15
    209 
    210     SMULBT          r8, r10, r7
    211 
    212     STRH            r14, [r4], #2
    213     STRH            r1, [r4], #2
    214 
    215     SMULTT          r14, r10, r7
    216     SMLATB          r8, r10, r7, r8
    217     SMULBB          r7, r10, r7
    218 
    219     LDRSH           r10, [r2], #2
    220     MOV             r8, r8, asr #15
    221     QSUB            r7, r7, r14
    222 
    223     SMULBB          r14, r10, r3
    224     SMULBB          r1, r10, r9
    225     MOV             r7, r7, asr #15
    226 
    227     SUB             r8, r8, r14, asr #15
    228     SUB             r7, r7, r1, asr #15
    229 
    230     SMULBB          r14, r7, r10
    231     SMULBB          r1, r8, r10
    232 
    233     LDR             r10, [r12, #252]
    234 
    235     ADD             r14, r9, r14, asr #15
    236     LDR             r9, [r6]
    237 
    238     ADD             r1, r3, r1, asr #15
    239 
    240     SMULBT          r3, r10, r9
    241 
    242 
    243     STRH            r14, [r5], #2
    244     STRH            r1, [r5], #2
    245 
    246     SMULTT          r14, r10, r9
    247     SMLATB          r3, r10, r9, r3
    248     SMULBB          r9, r10, r9
    249 
    250     LDRSH           r10, [r2], #2
    251     MOV             r3, r3, asr #15
    252     QSUB            r9, r9, r14
    253 
    254     SMULBB          r14, r10, r8
    255     SMULBB          r1, r10, r7
    256     MOV             r9, r9, asr #15
    257 
    258     SUB             r3, r3, r14, asr #15
    259     SUB             r9, r9, r1, asr #15
    260 
    261     SMULBB          r14, r9, r10
    262     SMULBB          r1, r3, r10
    263 
    264     LDR             r10, [r13, #12]
    265     ADD             r7, r7, r14, asr #15
    266     ADD             r1, r8, r1, asr #15
    267 
    268     LDRH            r8, [r10], #2
    269     STR             r10, [r13, #12]
    270     STRH            r7, [r6], #2
    271     LDR             r10, [r13, #4]
    272 
    273     STRH            r1, [r6], #2
    274 
    275     MOV             r8, r8, lsl #1
    276     LDRH            r8, [r10, r8]
    277     LDR             r10, [r13, #8]
    278 
    279     LDR             r1, [r13, #16]
    280     LDR             r14, [r13]
    281     LDR             r7, [r13, #24]
    282 
    283     SMULBB          r3, r3, r8
    284     SMULBB          r9, r9, r8
    285 
    286     SUBS            r14, r14, #1
    287     MOV             r3, r3, lsl #1
    288     MOV             r9, r9, lsl #1
    289 
    290     STR             r3, [r7] , #4
    291     STR             r9, [r10], #4
    292     STR             r14, [r13]
    293     STR             r10, [r13, #8]
    294     STR             r7, [r13, #24]
    295     BGT             DE_COR_FIL2_LOOP2
    296 
    297     ADD             r13, r13, #28
    298 
    299     LDMFD           r13!, {r4-r12, pc}
    300 
    301 
    302 
    303 
    304 .text
    305 .p2align 2
    306 .global ixheaacd_decorr_filter1_armv7
    307 
    308 ixheaacd_decorr_filter1_armv7:
    309 
    310     STMFD           r13!, {r4-r12, r14}
    311     ADD             r12, r0, #0x0bc
    312 
    313     LDRSH           r4, [r0, #12]
    314     LDRSH           r5, [r0, #14]
    315     LDRSH           r6, [r0, #16]
    316 
    317     MOV             r11, #192
    318     LDR             r3, [r0, #0x2c]
    319 
    320     MLA             r4, r11, r4, r12
    321 
    322     MLA             r5, r11, r5, r12
    323 
    324     MLA             r6, r11, r6, r12
    325 
    326 
    327     ADD             r11, r1, #0x01b0
    328     LDRH            r7, [r0, #28]
    329 
    330     ADD             r5, r5, #64
    331 
    332     ADD             r6, r6, #128
    333 
    334 
    335     ADD             r8, r0, #0x03c
    336     ADD             r11, r11, #0x0c
    337 
    338     MOV             r0, #64
    339     ADD             r12, r11, #0x1c0
    340 
    341 
    342     SUB             r10, r11, #0x0b4
    343     MLA             r0, r7, r0, r8
    344 
    345 
    346     MOV             r9, #10
    347     STR             r10, [r13, #-4]!
    348     STR             r3, [r13, #-4]!
    349     STR             r2, [r13, #-4]!
    350     STR             r9, [r13, #-4]!
    351     ADD             r2, r1, #0x096
    352     MOV             r1, r3
    353 
    354 
    355 
    356 DE_COR_FIL1_LOOP:
    357 
    358     LDR             r7, [r0]
    359     LDR             r8, [r11], #4
    360     LDR             r14, [r1], #4
    361 
    362     SMULBT          r3, r7, r8
    363     SMULBB          r9, r7, r8
    364 
    365     STR             r1, [r13, #8]
    366 
    367     SMULTT          r10, r7, r8
    368     SMLATB          r3, r7, r8, r3
    369 
    370     MOV             r8, #0x8000
    371 
    372     QSUB            r9, r9, r10
    373     LDR             r10, [r1, #0x3c]
    374     QADD            r14, r14, r8
    375     QADD            r1, r10, r8
    376 
    377     MOV             r7, r9, asr #15
    378     MOV             r8, r3, asr #15
    379 
    380     LDR             r10, [r12], #4
    381     LDR             r9, [r4]
    382 
    383 
    384     MOV             r14, r14, asr #16
    385     MOV             r1, r1, asr #16
    386 
    387     SMULBT          r3, r10, r9
    388 
    389     STRH            r14, [r0], #2
    390     STRH            r1, [r0], #2
    391 
    392 
    393 
    394 
    395 
    396     SMULTT          r14, r10, r9
    397     SMLATB          r3, r10, r9, r3
    398     SMULBB          r9, r10, r9
    399 
    400     LDRSH           r10, [r2]
    401     MOV             r3, r3, asr #15
    402     QSUB            r9, r9, r14
    403 
    404     SMULBB          r14, r10, r8
    405     SMULBB          r1, r10, r7
    406     MOV             r9, r9, asr #15
    407 
    408     SUB             r3, r3, r14, asr #15
    409     SUB             r9, r9, r1, asr #15
    410 
    411     SMULBB          r14, r9, r10
    412     SMULBB          r1, r3, r10
    413 
    414     LDR             r10, [r12, #60 ]
    415 
    416     ADD             r14, r7, r14, asr #15
    417     LDR             r7, [r5]
    418 
    419     ADD             r1, r8, r1, asr #15
    420 
    421     SMULBT          r8, r10, r7
    422     STRH            r14, [r4], #2
    423     STRH            r1, [r4], #2
    424 
    425     SMULTT          r14, r10, r7
    426     SMLATB          r8, r10, r7, r8
    427     SMULBB          r7, r10, r7
    428 
    429     LDRSH           r10, [r2, #2]
    430     MOV             r8, r8, asr #15
    431     QSUB            r7, r7, r14
    432 
    433     SMULBB          r14, r10, r3
    434     SMULBB          r1, r10, r9
    435     MOV             r7, r7, asr #15
    436 
    437     SUB             r8, r8, r14, asr #15
    438     SUB             r7, r7, r1, asr #15
    439 
    440     SMULBB          r14, r7, r10
    441     SMULBB          r1, r8, r10
    442 
    443     LDR             r10, [r12, #124]
    444 
    445     ADD             r14, r9, r14, asr #15
    446     LDR             r9, [r6]
    447 
    448     ADD             r1, r3, r1, asr #15
    449 
    450     SMULBT          r3, r10, r9
    451 
    452     STRH            r14, [r5], #2
    453     STRH            r1, [r5], #2
    454 
    455     SMULTT          r14, r10, r9
    456     SMLATB          r3, r10, r9, r3
    457     SMULBB          r9, r10, r9
    458 
    459     LDRSH           r10, [r2, #4]
    460     MOV             r3, r3, asr #15
    461     QSUB            r9, r9, r14
    462 
    463     SMULBB          r14, r10, r8
    464     SMULBB          r1, r10, r7
    465     MOV             r9, r9, asr #15
    466 
    467     SUB             r3, r3, r14, asr #15
    468     SUB             r9, r9, r1, asr #15
    469 
    470     SMULBB          r14, r9, r10
    471     SMULBB          r1, r3, r10
    472 
    473     LDR             r10, [r13, #12]
    474     ADD             r7, r7, r14, asr #15
    475     ADD             r1, r8, r1, asr #15
    476 
    477     LDRH            r8, [r10], #2
    478     STR             r10, [r13, #12]
    479     STRH            r7, [r6], #2
    480     LDR             r10, [r13, #4]
    481 
    482     STRH            r1, [r6], #2
    483 
    484     MOV             r8, r8, lsl #1
    485     LDRH            r8, [r10, r8]
    486 
    487     LDR             r14, [r13]
    488     LDR             r1, [r13, #8]
    489 
    490     SMULBB          r3, r3, r8
    491     SMULBB          r9, r9, r8
    492 
    493     SUBS            r14, r14, #1
    494     MOV             r3, r3, lsl #1
    495     MOV             r9, r9, lsl #1
    496 
    497     STR             r3, [r1 , #0x0bc]
    498     STR             r9, [r1, #0x7c]
    499     STR             r14, [r13]
    500     BGT             DE_COR_FIL1_LOOP
    501 
    502     ADD             r13, r13, #16
    503 
    504     LDMFD           r13!, {r4-r12, pc}
    505 
    506 
    507 
    508 
    509 
    510 
    511 
    512 
    513 
    514 
    515 
    516 .text
    517 .p2align 2
    518 .global ixheaacd_divide16_pos_armv7
    519 
    520 ixheaacd_divide16_pos_armv7:
    521     CMP             r1, #0
    522     MOV             r2, r1
    523 @    MVNLTS      r2, r2
    524     MVNSLT          r2, r2
    525     CLZ             r2, r2
    526     SUB             r2, r2, #1
    527     MOV             r0, r0, LSL r2
    528     MOV             r1, r1, LSL r2
    529     MOV             r2, r1, LSR #16
    530     MOV             r0, r0, LSR #16
    531     MOVS            r0, r0, LSL #16
    532     MOV             r2, r2, LSL #16
    533     BXEQ            r14
    534     MOV             r1, #0x10
    535     MOV             r3, #1
    536 FFR_DIV_LOOP:
    537     CMP             r0, r2
    538     MOVCC           r0, r0, LSL #1
    539     SUBCS           r0, r0, r2
    540     ADDCS           r0, r3, r0, LSL #1
    541     SUBS            r1, r1, #1
    542     BGT             FFR_DIV_LOOP
    543     BX              r14
    544 
    545 
    546 
    547 
    548 
    549 
    550 
    551 
    552 
    553 
    554 
    555 
    556 
    557 
    558 
    559 
    560 
    561 
    562 
    563 .text
    564 .p2align 2
    565 .global ixheaacd_decorrelation_armv7
    566 
    567 
    568 
    569 
    570 ixheaacd_decorrelation_armv7:
    571 
    572     STMFD           r13!, {r4-r12, r14}
    573 
    574     LDR             r4, [r13, #40]
    575     LDR             r5, [r13, #44]
    576     LDR             r6, [r0, #0x2c]
    577     STR             r1, [r13, #-4]!
    578     STR             r2, [r13, #-4]!
    579     STR             r3, [r13, #-4]!
    580     STR             r4, [r13, #-4]!
    581     SUB             r13, r13, #124
    582 
    583 
    584     LDR             r7, [r6]
    585     LDR             r8, [r6, #20]
    586     LDR             r9, [r6, #64]
    587     LDR             r10, [r6, #84]
    588 
    589     SMULWT          r11, r7, r7
    590     SMULWT          r12, r9, r9
    591     SMLAWT          r11, r8, r8, r11
    592     SMLAWT          r12, r10, r10, r12
    593 
    594     LDR             r10, [r6, #16]
    595     LDR             r8, [r6, #80]
    596     LDR             r9, [r6, #4]
    597     QADD            r14, r11, r12
    598     LDR             r7, [r6, #68]
    599     SMULWT          r11, r10, r10
    600     STR             r14, [r13]
    601 
    602     SMULWT          r12, r9, r9
    603     SMLAWT          r11, r7, r7, r11
    604     LDRSH           r7, [r5, #0x0aa]
    605     SMLAWT          r12, r8, r8, r12
    606 
    607 
    608 
    609     ADD             r10, r6, #0x040
    610     LDR             r8, [r6, r7, lsl #2]
    611     QADD            r14, r11, r12
    612     LDR             r9, [r10, r7, lsl #2]
    613     LDRSH           r7, [r5, #0x0ac]
    614     SMULWT          r11, r8, r8
    615     STR             r14, [r13, #4]
    616 
    617     LDR             r8, [r6, r7, lsl #2]
    618     SMLAWT          r12, r9, r9, r11
    619     LDR             r9, [r10, r7, lsl #2]
    620     LDRSH           r7, [r5, #0x0ae]
    621     SMULWT          r11, r8, r8
    622     STR             r12, [r13, #8]
    623 
    624     LDR             r8, [r6, r7, lsl #2]
    625     SMLAWT          r12, r9, r9, r11
    626     LDR             r9, [r10, r7, lsl #2]
    627     LDRSH           r7, [r5, #0x0b0]
    628     SMULWT          r11, r8, r8
    629     STR             r12, [r13, #12]
    630 
    631     LDR             r8, [r6, r7, lsl #2]
    632     SMLAWT          r12, r9, r9, r11
    633     LDR             r9, [r10, r7, lsl #2]
    634     LDRSH           r7, [r5, #0x0b2]
    635     SMULWT          r11, r8, r8
    636     STR             r12, [r13, #16]
    637 
    638     LDR             r8, [r6, r7, lsl #2]
    639     SMLAWT          r12, r9, r9, r11
    640     LDR             r9, [r10, r7, lsl #2]
    641     LDRSH           r7, [r5, #0x0b4]
    642     SMULWT          r11, r8, r8
    643     STR             r12, [r13, #20]
    644 
    645     LDR             r8, [r6, r7, lsl #2]
    646     SMLAWT          r12, r9, r9, r11
    647     LDR             r9, [r10, r7, lsl #2]
    648     LDR             r6, [r1, #12]
    649     SMULWT          r11, r8, r8
    650     LDR             r7, [r2, #12]
    651     SMLAWT          r14, r9, r9, r11
    652     STR             r12, [r13, #24]
    653 
    654 
    655     LDR             r8, [r1, #16]
    656     SMULWT          r10, r6, r6
    657     LDR             r9, [r2, #16]
    658     SMLAWT          r12, r7, r7, r10
    659     STR             r14, [r13, #28]
    660 
    661     SMULWT          r10, r8, r8
    662     LDR             r6, [r1, #20]
    663     SMLAWT          r14, r9, r9, r10
    664 
    665     LDR             r7, [r2, #20]
    666     STR             r12, [r13, #32]
    667 
    668     LDR             r8, [r1, #24]
    669     SMULWT          r10, r6, r6
    670     LDR             r9, [r2, #24]
    671     SMLAWT          r12, r7, r7, r10
    672     STR             r14, [r13, #36]
    673 
    674     SMULWT          r10, r8, r8
    675     LDR             r6, [r1, #28]
    676     SMLAWT          r14, r9, r9, r10
    677 
    678     LDR             r7, [r2, #28]
    679     STR             r12, [r13, #40]
    680 
    681 
    682     LDR             r8, [r1, #32]
    683     SMULWT          r10, r6, r6
    684     LDR             r9, [r2, #32]
    685     SMLAWT          r12, r7, r7, r10
    686     STR             r14, [r13, #44]
    687 
    688     SMULWT          r10, r8, r8
    689     ADD             r7, r0, #0x06c0
    690     SMLAWT          r14, r9, r9, r10
    691     STR             r12, [r13, #48]
    692     LDRSH           r12, [r7, #2]
    693     STR             r14, [r13, #52]
    694     STR             r0, [r13, #-4]!
    695     STR             r5, [r13, #-4]!
    696 
    697 
    698     ADD             r3, r5, #0x0c2
    699     MOV             r0, #6
    700     ADD             r4, r13, #64
    701 
    702 DE_COR_LOOP1:
    703 
    704     LDRSH           r6, [r3, #2]
    705     LDRSH           r7, [r3], #2
    706     MOV             r14, #0
    707     CMP             r6, r12
    708     MOVGT           r6, r12
    709 
    710 
    711     SUBS            r6, r6, r7
    712 
    713 
    714     ADD             r8, r1, r7, lsl #2
    715     ADD             r9, r2, r7, lsl #2
    716     BLE             DE_COR_NEXT1
    717     LDR             r10, [r8], #4
    718     LDR             r11, [r9], #4
    719     LDRSH           r7, [r3, #0x0c]
    720 
    721 
    722 DE_COR_LOOP1_1:
    723 
    724     SMULWT          r5, r10, r10
    725     SUBS            r6, r6, #1
    726     SMLAWT          r5, r11, r11, r5
    727     LDR             r10, [r8], #4
    728     LDR             r11, [r9], #4
    729     MOV             r5, r5, asr  r7
    730     QADD            r14, r14, r5
    731     BGT             DE_COR_LOOP1_1
    732 
    733 DE_COR_NEXT1:
    734     SUBS            r0, r0, #1
    735     STR             r14, [r4], #4
    736     BGT             DE_COR_LOOP1
    737 
    738     LDR             r5, [r13], #4
    739     LDR             r0, [r13], #4
    740 
    741     MOV             r14, #20
    742     MOV             r7, r13
    743     LDR             r3, [r0, #0x020]
    744     LDR             r4, [r0, #0x028]
    745     LDR             r12, =0x620a
    746     LDR             r6, [r0, #0x024]
    747     STR             r0, [r13, #-4]!
    748     STR             r5, [r13, #-4]!
    749     MOV             r11, #0x6000
    750     MOV             r8, #0x0ff
    751     ADD             r5, r7, #80
    752     ORR             r8, r8, #0x07f00
    753 
    754 DE_COR_LOOP2:
    755 
    756     LDR             r9, [r3]
    757     LDR             r2, [r7]
    758     LDR             r10, [r4]
    759     SMULWB          r9, r9, r12
    760 
    761     MOVS            r2, r2, lsl #1
    762     SMULWB          r10, r10, r11
    763     MOVLT           r2, #0
    764     MOV             r9, r9, lsl #1
    765     CMP             r2, r9
    766     MOVGT           r9, r2
    767 
    768     STR             r9, [r3], #4
    769     QSUB            r9, r9, r2
    770 
    771     MOV             r10, r10, lsl #1
    772     STR             r2, [r7], #4
    773     MOV             r9, r9, asr #2
    774     QADD            r9, r9, r10
    775 
    776 
    777 
    778 
    779     LDR             r10, [r6]
    780     MOV             r2, r2, asr #2
    781     STR             r9, [r4], #4
    782     SMULWB          r10, r10, r11
    783 
    784 
    785     MOV             r0, r9, asr #1
    786     QADD            r1, r9, r0
    787     MOV             r10, r10, lsl #1
    788     ADD             r0, r10, r2
    789 
    790 
    791     STR             r0, [r6], #4
    792     CMP             r1, r0
    793 
    794     MOVLE           r0, r8
    795     BLE             DE_COR_NEXT2
    796 
    797 
    798 
    799 
    800 
    801 
    802 
    803 
    804     MOVS            r2, r1
    805     MVNLT           r2, r2
    806     CLZ             r2, r2
    807     SUB             r2, r2, #1
    808     MOV             r0, r0, lsl r2
    809     MOV             r1, r1, lsl r2
    810     MOV             r2, r1, lsr #16
    811     MOV             r0, r0, lsr #16
    812     MOVS            r0, r0, lsl #16
    813     MOV             r2, r2, lsl #16
    814     BEQ             DE_COR_NEXT1_1
    815     MOV             r1, #04
    816     MOV             r10, #1
    817 
    818 
    819 DE_COR_DIV_LOOP:
    820     SUBS            r9, r0, r2
    821     MOVCC           r0, r0, lsl #1
    822 
    823     ADDCS           r0, r10, r9, lsl #1
    824 
    825 
    826     SUBS            r9, r0, r2
    827     MOVCC           r0, r0, lsl #1
    828 
    829     ADDCS           r0, r10, r9, lsl #1
    830 
    831 
    832     SUBS            r9, r0, r2
    833     MOVCC           r0, r0, lsl #1
    834 
    835     ADDCS           r0, r10, r9, lsl #1
    836 
    837 
    838     SUBS            r9, r0, r2
    839     MOVCC           r0, r0, lsl #1
    840 
    841     ADDCS           r0, r10, r9, lsl #1
    842 
    843 
    844     SUBS            r1, r1, #1
    845     BGT             DE_COR_DIV_LOOP
    846 
    847 
    848 
    849 DE_COR_NEXT1_1:
    850 
    851 
    852 
    853 
    854     MOV             r0, r0, lsl #16
    855     MOV             r0, r0, asr #16
    856 
    857 DE_COR_NEXT2:
    858 
    859     STRH            r0, [r5], #2
    860     SUBS            r14, r14, #1
    861     BGT             DE_COR_LOOP2
    862 
    863     LDR             r5, [r13], #4
    864     LDR             r0, [r13]
    865     MOV             r1, r5
    866     ADD             r2, r13, #84
    867     BL              ixheaacd_decorr_filter1_armv7
    868 
    869     LDR             r0, [r13]
    870     LDR             r1, [r13, #140]
    871     LDR             r2, [r13, #136]
    872 
    873     ADD             r7, r13, #84
    874     MOV             r8, #0
    875 
    876     LDR             r3, [r13, #132]
    877     LDR             r6, [r13, #128]
    878 
    879     STRH            r8, [r7, #40]
    880     STR             r7, [r13, #-4]!
    881     STR             r5, [r13, #-4]!
    882     STR             r6, [r13, #-4]!
    883     BL              ixheaacd_decorr_filter2_armv7
    884 
    885 
    886 
    887 
    888     ADD             r13, r13, #12
    889     LDR             r0, [r13], #4
    890 
    891     LDR             r1, [r13, #136]
    892     LDR             r2, [r13, #132]
    893     ADD             r6, r0, #0x06c0
    894     LDR             r3, [r13, #128]
    895     LDR             r4, [r13, #124]
    896 
    897     LDRSH           r10, [r0, #0x1e]
    898     LDR             r9, [r0, #4]
    899     LDRSH           r12, [r6, #2]
    900     LDRSH           r14, [r5, #0x0cc]
    901     MOV             r6, #0x030
    902     LDRSH           r11, [r5, #0x0ca]
    903     MLA             r6, r10, r6, r9
    904 
    905 
    906 
    907 
    908     ADD             r10, r10, #1
    909 
    910     CMP             r10, #14
    911     MOVGE           r10, #0
    912 
    913 
    914     CMP             r12, r14
    915     MOVLT           r14, r12
    916     STRH            r10, [r0, #0x1e]
    917     ADD             r1, r1, r11, lsl #2
    918     ADD             r2, r2, r11, lsl #2
    919     ADD             r3, r3, r11, lsl #2
    920     ADD             r4, r4, r11, lsl #2
    921     LDRSH           r8, [r7, #36]
    922     SUBS            r14, r14, r11
    923     MOV             r7, #0x08000
    924     BLE             DE_COR_NEXT3
    925 
    926 
    927 
    928 DE_COR_LOOP3:
    929 
    930     LDR             r10, [r1], #4
    931     LDR             r11, [r2], #4
    932     LDR             r9, [r6]
    933     QADD            r10, r10, r7
    934     QADD            r11, r11, r7
    935     SUBS            r14, r14, #1
    936 
    937     MOV             r10, r10, asr #16
    938     STRH            r10, [r6], #2
    939 
    940     SMULBB          r10, r9, r8
    941 
    942 
    943     MOV             r11, r11, asr #16
    944     STRH            r11, [r6], #2
    945 
    946     SMULTB          r11, r9, r8
    947 
    948 
    949     MOV             r10, r10, lsl #1
    950     STR             r10, [r3], #4
    951 
    952     MOV             r11, r11, lsl #1
    953     STR             r11, [r4], #4
    954     BGT             DE_COR_LOOP3
    955 
    956 DE_COR_NEXT3:
    957     LDR             r1, [r13, #136]
    958     LDR             r2, [r13, #132]
    959     LDR             r3, [r13, #128]
    960     LDR             r4, [r13, #124]
    961 
    962     LDRSH           r8, [r13, #118]
    963     LDRSH           r14, [r5, #0x0ce]
    964     LDRSH           r11, [r5, #0x0cc]
    965     LDR             r6, [r0, #8]
    966     LDRSH           r8, [r13, #118]
    967 
    968     CMP             r12, r14
    969     MOVLT           r14, r12
    970 
    971     ADD             r1, r1, r11, lsl #2
    972     ADD             r2, r2, r11, lsl #2
    973     ADD             r3, r3, r11, lsl #2
    974     ADD             r4, r4, r11, lsl #2
    975 
    976     SUBS            r14, r14, r11
    977     BLE             DE_COR_NEXT4
    978 
    979 
    980 
    981 DE_COR_LOOP4:
    982     LDR             r10, [r1], #4
    983     LDR             r11, [r2], #4
    984     LDR             r9, [r6]
    985     QADD            r10, r10, r7
    986     QADD            r11, r11, r7
    987     SUBS            r14, r14, #1
    988 
    989     MOV             r10, r10, asr #16
    990     STRH            r10, [r6], #2
    991 
    992     SMULBB          r10, r9, r8
    993 
    994 
    995     MOV             r11, r11, asr #16
    996     STRH            r11, [r6], #2
    997 
    998     SMULTB          r11, r9, r8
    999 
   1000     MOV             r10, r10, lsl #1
   1001     STR             r10, [r3], #4
   1002 
   1003     MOV             r11, r11, lsl #1
   1004     STR             r11, [r4], #4
   1005     BGT             DE_COR_LOOP4
   1006 
   1007 DE_COR_NEXT4:
   1008 
   1009     LDR             r3, [r13, #128]
   1010     LDR             r4, [r13, #124]
   1011 
   1012     RSBS            r14, r12, #64
   1013 
   1014 
   1015     MOV             r9, #0
   1016     LDRSH           r10, [r0, #0x01c]
   1017     ADD             r3, r3, r12, lsl #2
   1018     ADD             r4, r4, r12, lsl #2
   1019     BLE             DE_COR_NEXT5
   1020 
   1021 DE_COR_LOOP5:
   1022 
   1023     STR             r9, [r3], #4
   1024     STR             r9, [r4], #4
   1025     SUBS            r14, r14, #1
   1026     BGT             DE_COR_LOOP5
   1027 
   1028 DE_COR_NEXT5:
   1029 
   1030 
   1031     ADD             r10, r10, #1
   1032     CMP             r10, #2
   1033     MOVGE           r10, #0
   1034 
   1035     STRH            r10, [r0, #0x01c]
   1036 
   1037 
   1038 
   1039     LDRSH           r1, [r0, #0x0c]
   1040     LDRSH           r4, [r0, #0x12]
   1041     LDRSH           r2, [r0, #0x0e]
   1042     LDRSH           r5, [r0, #0x14]
   1043     LDRSH           r3, [r0, #0x10]
   1044     LDRSH           r6, [r0, #0x16]
   1045 
   1046     ADD             r13, r13, #140
   1047     ADD             r1, r1, #1
   1048     ADD             r2, r2, #1
   1049     ADD             r3, r3, #1
   1050 
   1051     CMP             r1, r4
   1052     MOVGE           r1, #0
   1053 
   1054 
   1055 
   1056     CMP             r2, r5
   1057     MOVGE           r2, #0
   1058 
   1059 
   1060 
   1061     CMP             r3, r6
   1062     MOVGE           r3, #0
   1063 
   1064 
   1065 
   1066     STRH            r1, [r0, #0x0c]
   1067     STRH            r2, [r0, #0x0e]
   1068     STRH            r3, [r0, #0x10]
   1069 
   1070     LDMFD           r13!, {r4-r12, pc}
   1071 
   1072