Home | History | Annotate | Download | only in asm
      1 ; ------------------------------------------------------------------
      2 ; Copyright (C) 1998-2009 PacketVideo
      3 ;
      4 ; Licensed under the Apache License, Version 2.0 (the "License");
      5 ; you may not use this file except in compliance with the License.
      6 ; You may obtain a copy of the License at
      7 ;
      8 ;      http://www.apache.org/licenses/LICENSE-2.0
      9 ;
     10 ; Unless required by applicable law or agreed to in writing, software
     11 ; distributed under the License is distributed on an "AS IS" BASIS,
     12 ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
     13 ; express or implied.
     14 ; See the License for the specific language governing permissions
     15 ; and limitations under the License.
     16 ; -------------------------------------------------------------------
     17 
     18 ;
     19 ;
     20 ;   Filename: pvmp3_dct_18.s
     21 ;
     22 ;------------------------------------------------------------------------------
     23 ; REVISION HISTORY
     24 ;
     25 ;
     26 ; Who:                                   Date: MM/DD/YYYY
     27 ; Description:
     28 ;
     29 ;------------------------------------------------------------------------------
     30 
     31         EXPORT pvmp3_mdct_18
     32 
     33         IMPORT ||Lib$$Request$$armlib|| [WEAK]
     34         IMPORT ||Lib$$Request$$cpplib|| [WEAK]
     35         IMPORT pvmp3_dct_9
     36 
     37 
     38 ;------------------------------------------------------------------------------
     39 
     40  AREA |.text|, CODE, READONLY, ALIGN=2
     41 
     42 
     43 ;------------------------------------------------------------------------------
     44 
     45 |pvmp3_mdct_18| PROC
     46         stmfd    sp!,{r4-r10,lr}
     47         mov      r7,r2
     48         ldr      r2,table
     49         mov      r6,r1
     50         add      r3,r2,#0x24
     51         add      r12,r3,#0x44
     52         add      r1,r0,#0x44
     53         mov      r5,r0
     54 
     55 ;    for ( i=9; i!=0; i--)
     56 ;    {
     57 
     58         mov      r4,#9
     59 Loop_1
     60 
     61 ;       tmp  = *(pt_vec);
     62 ;		tmp1 = *(pt_vec_o);
     63 
     64         ldr      lr,[r0]		;; tmp  == lr
     65         ldr      r8,[r3],#4		;; tmp1 == r8
     66 
     67 ;        tmp  = fxp_mul32_Q32( tmp<<1,  *(pt_cos++  ));
     68 ;        tmp1 = fxp_mul32_Q27( tmp1, *(pt_cos_x--));
     69 
     70         mov      lr,lr,lsl #1
     71         smull    r10,lr,r8,lr
     72         ldr      r8,[r12],#-4
     73         ldr      r9,[r1]
     74         subs     r4,r4,#1
     75         smull    r9,r10,r8,r9
     76         mov      r8,r9,lsr #27
     77         add      r8,r8,r10,lsl #5
     78 
     79 ;        *(pt_vec++)   =   tmp + tmp1 ;
     80 ;        *(pt_vec_o--) = fxp_mul32_Q28( (tmp - tmp1), *(pt_cos_split++));
     81 
     82         add      r9,lr,r8
     83         sub      r8,lr,r8
     84         ldr      lr,[r2],#4
     85         str      r9,[r0],#4
     86         smull    r8,r9,lr,r8
     87         mov      lr,r8,lsr #28
     88         add      lr,lr,r9,lsl #4
     89         str      lr,[r1],#-4
     90         bne      Loop_1
     91 
     92 ;		}
     93 
     94         mov      r0,r5			;; r0 = vec
     95         bl       pvmp3_dct_9
     96         add      r0,r5,#0x24	;; r0 = &vec[9]
     97         bl       pvmp3_dct_9
     98 
     99         ldr      r0,[r5,#0x20]
    100         ldr      r2,[r5,#0x40]
    101         str      r0,[r5,#0x40]
    102         ldr      r0,[r5,#0x1c]
    103         ldr      r3,[r5,#0x38]
    104         str      r0,[r5,#0x38]
    105         ldr      r1,[r5,#0x18]
    106         ldr      r0,[r5,#0x30]
    107         str      r1,[r5,#0x30]
    108         ldr      r12,[r5,#0x14]
    109         ldr      r1,[r5,#0x28]
    110         str      r12,[r5,#0x28]
    111         ldr      r12,[r5,#0x10]
    112         str      r12,[r5,#0x20]
    113         ldr      r12,[r5,#0xc]
    114         str      r12,[r5,#0x18]
    115         ldr      r12,[r5,#8]
    116         str      r12,[r5,#0x10]
    117         ldr      r12,[r5,#4]
    118         str      r12,[r5,#8]
    119         ldr      r12,[r5,#0x24]
    120         sub      r12,r12,r1
    121         str      r12,[r5,#4]
    122         ldr      r12,[r5,#0x2c]
    123         sub      r1,r12,r1
    124         str      r1,[r5,#0xc]
    125         sub      r1,r12,r0
    126         str      r1,[r5,#0x14]
    127         ldr      r1,[r5,#0x34]
    128         sub      r0,r1,r0
    129         str      r0,[r5,#0x1c]
    130         sub      r0,r1,r3
    131         str      r0,[r5,#0x24]
    132         ldr      r1,[r5,#0x3c]
    133         sub      r3,r1,r3
    134         sub      r1,r1,r2
    135         str      r1,[r5,#0x34]
    136         str      r3,[r5,#0x2c]
    137         ldr      r1,[r5,#0x44]
    138         sub      r1,r1,r2
    139         str      r1,[r5,#0x3c]
    140         ldr      r12,[r5,#0]
    141 
    142 Loop_2
    143         add      r1,r5,r4,lsl #2
    144         ldr      r2,[r1,#0x28]
    145         ldr      r3,[r6,r4,lsl #2]
    146         add      r0,r0,r2
    147         str      r0,[r1,#0x28]
    148         ldr      lr,[r7,r4,lsl #2]
    149         ldr      r1,[r1,#4]
    150         smlal    r0,r3,lr,r0
    151         mov      r0,r2
    152         add      r2,r12,r1
    153         rsb      r2,r2,#0
    154         str      r3,[r5,r4,lsl #2]
    155         str      r2,[r6,r4,lsl #2]
    156         add      r4,r4,#1
    157         cmp      r4,#6
    158         mov      r12,r1
    159 
    160         blt      Loop_2
    161 
    162         ldr      r1,[r5,#0x40]
    163         ldr      r2,[r6,#0x18]
    164         add      r3,r0,r1
    165         str      r3,[r5,#0x40]
    166         ldr      lr,[r7,r4,lsl #2]
    167         mov      r3,r3,lsl #1
    168         ldr      r0,[r5,#0x1c]
    169         smlal    r3,r2,lr,r3
    170         add      r3,r12,r0
    171         str      r2,[r5,#0x18]
    172         ldr      r2,[r6,#0x1c]
    173         rsb      r3,r3,#0
    174         str      r3,[r6,#0x18]
    175         ldr      r3,[r5,#0x20]
    176         add      r0,r3,r0
    177         rsb      r0,r0,#0
    178         str      r0,[r6,#0x1c]
    179         ldr      r3,[r5,#0x44]
    180         ldr      r0,[r6,#0x20]
    181         add      r3,r3,r1
    182         mov      r1,r2
    183         ldr      r10,[r7,#0x1c]
    184         mov      r2,r3,lsl #1
    185         smlal    r12,r1,r10,r2
    186         str      r1,[r5,#0x1c]
    187         ldr      r1,[r5,#0x20]
    188         ldr      r3,[r5,#0x24]
    189         add      r1,r1,r3
    190         rsb      r1,r1,#0
    191         str      r1,[r6,#0x20]
    192         ldr      r1,[r5,#0x44]
    193         ldr      r3,[r7,#0x20]
    194         mov      r1,r1,lsl #1
    195         smlal    r12,r0,r3,r1
    196         ldr      lr,[r7,#0x24]
    197         ldr      r3,[r6,#0x24]
    198         str      r0,[r5,#0x20]
    199         smlal    r1,r3,lr,r1
    200         ldr      r0,[r6,#0x40]
    201         ldr      r12,[r6,#0x44]
    202         str      r3,[r5,#0x24]
    203         ldr      r1,[r5,#0x28]
    204         ldr      r3,[r7,#0x44]
    205         mov      r1,r1,lsl #1
    206         smlal    r1,r12,r3,r1
    207         ldr      r1,[r5,#0x40]
    208         str      r12,[r5,#0x44]
    209         rsb      r8,r1,#0
    210         str      r8,[r5,#0x28]
    211         ldr      r1,[r5,#0x2c]
    212         ldr      r3,[r7,#0x40]
    213         mov      r1,r1,lsl #1
    214         smlal    r1,r0,r3,r1
    215         str      r0,[r5,#0x40]
    216         ldr      r0,[r5,#0x3c]
    217         ldr      r1,[r6,#0x38]
    218         ldr      r3,[r6,#0x3c]
    219         rsb      r9,r0,#0
    220         str      r9,[r5,#0x2c]
    221         ldr      r0,[r5,#0x30]
    222         ldr      r12,[r7,#0x3c]
    223         mov      r0,r0,lsl #1
    224         smlal    r0,r3,r12,r0
    225         str      r3,[r5,#0x3c]
    226         ldr      r0,[r5,#0x38]
    227         rsb      r0,r0,#0
    228         str      r0,[r5,#0x30]
    229         ldr      r3,[r5,#0x34]
    230         ldr      r12,[r7,#0x38]
    231         mov      r3,r3,lsl #1
    232         smlal    r3,r1,r12,r3
    233         mov      r0,r0,lsl #1
    234         str      r1,[r5,#0x38]
    235         ldr      r4,[r7,#0x34]
    236         ldr      r1,[r6,#0x34]
    237         ldr      r3,[r6,#0x30]
    238         smlal    r0,r1,r4,r0
    239         ldr      r12,[r6,#0x2c]
    240         ldr      lr,[r6,#0x28]
    241         str      r1,[r5,#0x34]
    242         ldr      r1,[r7,#0x30]
    243         mov      r0,r9,lsl #1
    244         smlal    r0,r3,r1,r0
    245         mov      r0,r8,lsl #1
    246         ldr      r1,[r7,#0x2c]
    247         str      r3,[r5,#0x30]
    248         smlal    r0,r12,r1,r0
    249         ldr      r0,[r7,#0x28]
    250         str      r12,[r5,#0x2c]
    251         smlal    r2,lr,r0,r2
    252         str      lr,[r5,#0x28]
    253         ldr      r1,[r6,#4]
    254         ldr      r12,[r7,#0x48]
    255         mov      r2,r1,lsl #1
    256         ldr      r1,[r6,#0x20]
    257         ldr      r0,[r6]
    258         mov      r1,r1,lsl #1
    259         smull    r4,lr,r12,r1
    260         ldr      r3,[r6,#0x1c]
    261         str      lr,[r6]
    262         ldr      r12,[r7,#0x4c]
    263         mov      r3,r3,lsl #1
    264         smull    r4,lr,r12,r3
    265         mov      r0,r0,lsl #1
    266         ldr      r12,[r7,#0x64]
    267         str      lr,[r6,#4]
    268         smull    r4,lr,r12,r2
    269         ldr      r12,[r7,#0x68]
    270         str      lr,[r6,#0x1c]
    271         smull    r4,lr,r12,r0
    272         ldr      r12,[r7,#0x6c]
    273         str      lr,[r6,#0x20]
    274         smull    lr,r0,r12,r0
    275         ldr      r12,[r7,#0x70]
    276         str      r0,[r6,#0x24]
    277         smull    r0,r2,r12,r2
    278         ldr      r0,[r7,#0x88]
    279         str      r2,[r6,#0x28]
    280         smull    r3,r2,r0,r3
    281         ldr      r0,[r7,#0x8c]
    282         str      r2,[r6,#0x40]
    283         smull    r2,r1,r0,r1
    284         str      r1,[r6,#0x44]
    285         ldr      r0,[r6,#0x18]
    286         ldr      lr,[r7,#0x50]
    287         mov      r1,r0,lsl #1
    288         ldr      r0,[r6,#0x14]
    289         smull    r5,r4,lr,r1
    290         ldr      r12,[r6,#0x10]
    291         mov      r3,r0,lsl #1
    292         ldr      r0,[r6,#0xc]
    293         mov      r12,r12,lsl #1
    294         mov      r2,r0,lsl #1
    295         ldr      r0,[r6,#8]
    296         str      r4,[r6,#8]
    297         ldr      lr,[r7,#0x54]
    298         mov      r0,r0,lsl #1
    299         smull    r5,r4,lr,r3
    300         ldr      lr,[r7,#0x58]
    301         str      r4,[r6,#0xc]
    302         smull    r5,r4,lr,r12
    303         ldr      lr,[r7,#0x5c]
    304         str      r4,[r6,#0x10]
    305         smull    r5,r4,lr,r2
    306         ldr      lr,[r7,#0x60]
    307         str      r4,[r6,#0x14]
    308         smull    r5,r4,lr,r0
    309         ldr      lr,[r7,#0x74]
    310         str      r4,[r6,#0x18]
    311         smull    r4,r0,lr,r0
    312         ldr      lr,[r7,#0x78]
    313         str      r0,[r6,#0x2c]
    314         smull    r0,r2,lr,r2
    315         ldr      r0,[r7,#0x7c]
    316         str      r2,[r6,#0x30]
    317         smull    r12,r2,r0,r12
    318         ldr      r0,[r7,#0x80]
    319         str      r2,[r6,#0x34]
    320         smull    r3,r2,r0,r3
    321         ldr      r0,[r7,#0x84]
    322         str      r2,[r6,#0x38]
    323         smull    r2,r1,r0,r1
    324         str      r1,[r6,#0x3c]
    325         ldmfd    sp!,{r4-r10,pc}
    326 table
    327         DCD      ||.constdata$1||
    328         ENDP
    329 
    330 ;------------------------------------------------------------------------------
    331 
    332  AREA |.constdata|, DATA, READONLY, ALIGN=2
    333 
    334 ;------------------------------------------------------------------------------
    335 
    336 ||.constdata$1||
    337 cosTerms_dct18
    338         DCD      0x0807d2b0
    339         DCD      0x08483ee0
    340         DCD      0x08d3b7d0
    341         DCD      0x09c42570
    342         DCD      0x0b504f30
    343         DCD      0x0df29440
    344         DCD      0x12edfb20
    345         DCD      0x1ee8dd40
    346         DCD      0x5bca2a00
    347 cosTerms_1_ov_cos_phi
    348         DCD      0x400f9c00
    349         DCD      0x408d6080
    350         DCD      0x418dcb80
    351         DCD      0x431b1a00
    352         DCD      0x4545ea00
    353         DCD      0x48270680
    354         DCD      0x4be25480
    355         DCD      0x50ab9480
    356         DCD      0x56ce4d80
    357         DCD      0x05ebb630
    358         DCD      0x06921a98
    359         DCD      0x0771d3a8
    360         DCD      0x08a9a830
    361         DCD      0x0a73d750
    362         DCD      0x0d4d5260
    363         DCD      0x127b1ca0
    364         DCD      0x1ea52b40
    365         DCD      0x5bb3cc80
    366 
    367 
    368 
    369         END
    370