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 pvmp3_dct_9
     34 
     35 
     36 ;------------------------------------------------------------------------------
     37 
     38  AREA |.text|, CODE, READONLY, ALIGN=2
     39 
     40 
     41 ;------------------------------------------------------------------------------
     42 
     43 |pvmp3_mdct_18| PROC
     44         stmfd    sp!,{r4-r10,lr}
     45         mov      r7,r2
     46         ldr      r2,table
     47         mov      r6,r1
     48         add      r3,r2,#0x24
     49         add      r12,r3,#0x44
     50         add      r1,r0,#0x44
     51         mov      r5,r0
     52 
     53 ;    for ( i=9; i!=0; i--)
     54 ;    {
     55 
     56         mov      r4,#9
     57 Loop_1
     58 
     59 ;       tmp  = *(pt_vec);
     60 ;		tmp1 = *(pt_vec_o);
     61 
     62         ldr      lr,[r0]		;; tmp  == lr
     63         ldr      r8,[r3],#4		;; tmp1 == r8
     64 
     65 ;        tmp  = fxp_mul32_Q32( tmp<<1,  *(pt_cos++  ));
     66 ;        tmp1 = fxp_mul32_Q27( tmp1, *(pt_cos_x--));
     67 
     68         mov      lr,lr,lsl #1
     69         smull    r10,lr,r8,lr
     70         ldr      r8,[r12],#-4
     71         ldr      r9,[r1]
     72         subs     r4,r4,#1
     73         smull    r9,r10,r8,r9
     74         mov      r8,r9,lsr #27
     75         add      r8,r8,r10,lsl #5
     76 
     77 ;        *(pt_vec++)   =   tmp + tmp1 ;
     78 ;        *(pt_vec_o--) = fxp_mul32_Q28( (tmp - tmp1), *(pt_cos_split++));
     79 
     80         add      r9,lr,r8
     81         sub      r8,lr,r8
     82         ldr      lr,[r2],#4
     83         str      r9,[r0],#4
     84         smull    r8,r9,lr,r8
     85         mov      lr,r8,lsr #28
     86         add      lr,lr,r9,lsl #4
     87         str      lr,[r1],#-4
     88         bne      Loop_1
     89 
     90 ;		}
     91 
     92         mov      r0,r5			;; r0 = vec
     93         bl       pvmp3_dct_9
     94         add      r0,r5,#0x24	;; r0 = &vec[9]
     95         bl       pvmp3_dct_9
     96 
     97         ldr      r0,[r5,#0x20]
     98         ldr      r2,[r5,#0x40]
     99         str      r0,[r5,#0x40]
    100         ldr      r0,[r5,#0x1c]
    101         ldr      r3,[r5,#0x38]
    102         str      r0,[r5,#0x38]
    103         ldr      r1,[r5,#0x18]
    104         ldr      r0,[r5,#0x30]
    105         str      r1,[r5,#0x30]
    106         ldr      r12,[r5,#0x14]
    107         ldr      r1,[r5,#0x28]
    108         str      r12,[r5,#0x28]
    109         ldr      r12,[r5,#0x10]
    110         str      r12,[r5,#0x20]
    111         ldr      r12,[r5,#0xc]
    112         str      r12,[r5,#0x18]
    113         ldr      r12,[r5,#8]
    114         str      r12,[r5,#0x10]
    115         ldr      r12,[r5,#4]
    116         str      r12,[r5,#8]
    117         ldr      r12,[r5,#0x24]
    118         sub      r12,r12,r1
    119         str      r12,[r5,#4]
    120         ldr      r12,[r5,#0x2c]
    121         sub      r1,r12,r1
    122         str      r1,[r5,#0xc]
    123         sub      r1,r12,r0
    124         str      r1,[r5,#0x14]
    125         ldr      r1,[r5,#0x34]
    126         sub      r0,r1,r0
    127         str      r0,[r5,#0x1c]
    128         sub      r0,r1,r3
    129         str      r0,[r5,#0x24]
    130         ldr      r1,[r5,#0x3c]
    131         sub      r3,r1,r3
    132         sub      r1,r1,r2
    133         str      r1,[r5,#0x34]
    134         str      r3,[r5,#0x2c]
    135         ldr      r1,[r5,#0x44]
    136         sub      r1,r1,r2
    137         str      r1,[r5,#0x3c]
    138         ldr      r12,[r5,#0]
    139 
    140 Loop_2
    141         add      r1,r5,r4,lsl #2
    142         ldr      r2,[r1,#0x28]
    143         ldr      r3,[r6,r4,lsl #2]
    144         add      r0,r0,r2
    145         str      r0,[r1,#0x28]
    146         ldr      lr,[r7,r4,lsl #2]
    147         ldr      r1,[r1,#4]
    148         smlal    r0,r3,lr,r0
    149         mov      r0,r2
    150         add      r2,r12,r1
    151         rsb      r2,r2,#0
    152         str      r3,[r5,r4,lsl #2]
    153         str      r2,[r6,r4,lsl #2]
    154         add      r4,r4,#1
    155         cmp      r4,#6
    156         mov      r12,r1
    157 
    158         blt      Loop_2
    159 
    160         ldr      r1,[r5,#0x40]
    161         ldr      r2,[r6,#0x18]
    162         add      r3,r0,r1
    163         str      r3,[r5,#0x40]
    164         ldr      lr,[r7,r4,lsl #2]
    165         mov      r3,r3,lsl #1
    166         ldr      r0,[r5,#0x1c]
    167         smlal    r3,r2,lr,r3
    168         add      r3,r12,r0
    169         str      r2,[r5,#0x18]
    170         ldr      r2,[r6,#0x1c]
    171         rsb      r3,r3,#0
    172         str      r3,[r6,#0x18]
    173         ldr      r3,[r5,#0x20]
    174         add      r0,r3,r0
    175         rsb      r0,r0,#0
    176         str      r0,[r6,#0x1c]
    177         ldr      r3,[r5,#0x44]
    178         ldr      r0,[r6,#0x20]
    179         add      r3,r3,r1
    180         mov      r1,r2
    181         ldr      r10,[r7,#0x1c]
    182         mov      r2,r3,lsl #1
    183         smlal    r12,r1,r10,r2
    184         str      r1,[r5,#0x1c]
    185         ldr      r1,[r5,#0x20]
    186         ldr      r3,[r5,#0x24]
    187         add      r1,r1,r3
    188         rsb      r1,r1,#0
    189         str      r1,[r6,#0x20]
    190         ldr      r1,[r5,#0x44]
    191         ldr      r3,[r7,#0x20]
    192         mov      r1,r1,lsl #1
    193         smlal    r12,r0,r3,r1
    194         ldr      lr,[r7,#0x24]
    195         ldr      r3,[r6,#0x24]
    196         str      r0,[r5,#0x20]
    197         smlal    r1,r3,lr,r1
    198         ldr      r0,[r6,#0x40]
    199         ldr      r12,[r6,#0x44]
    200         str      r3,[r5,#0x24]
    201         ldr      r1,[r5,#0x28]
    202         ldr      r3,[r7,#0x44]
    203         mov      r1,r1,lsl #1
    204         smlal    r1,r12,r3,r1
    205         ldr      r1,[r5,#0x40]
    206         str      r12,[r5,#0x44]
    207         rsb      r8,r1,#0
    208         str      r8,[r5,#0x28]
    209         ldr      r1,[r5,#0x2c]
    210         ldr      r3,[r7,#0x40]
    211         mov      r1,r1,lsl #1
    212         smlal    r1,r0,r3,r1
    213         str      r0,[r5,#0x40]
    214         ldr      r0,[r5,#0x3c]
    215         ldr      r1,[r6,#0x38]
    216         ldr      r3,[r6,#0x3c]
    217         rsb      r9,r0,#0
    218         str      r9,[r5,#0x2c]
    219         ldr      r0,[r5,#0x30]
    220         ldr      r12,[r7,#0x3c]
    221         mov      r0,r0,lsl #1
    222         smlal    r0,r3,r12,r0
    223         str      r3,[r5,#0x3c]
    224         ldr      r0,[r5,#0x38]
    225         rsb      r0,r0,#0
    226         str      r0,[r5,#0x30]
    227         ldr      r3,[r5,#0x34]
    228         ldr      r12,[r7,#0x38]
    229         mov      r3,r3,lsl #1
    230         smlal    r3,r1,r12,r3
    231         mov      r0,r0,lsl #1
    232         str      r1,[r5,#0x38]
    233         ldr      r4,[r7,#0x34]
    234         ldr      r1,[r6,#0x34]
    235         ldr      r3,[r6,#0x30]
    236         smlal    r0,r1,r4,r0
    237         ldr      r12,[r6,#0x2c]
    238         ldr      lr,[r6,#0x28]
    239         str      r1,[r5,#0x34]
    240         ldr      r1,[r7,#0x30]
    241         mov      r0,r9,lsl #1
    242         smlal    r0,r3,r1,r0
    243         mov      r0,r8,lsl #1
    244         ldr      r1,[r7,#0x2c]
    245         str      r3,[r5,#0x30]
    246         smlal    r0,r12,r1,r0
    247         ldr      r0,[r7,#0x28]
    248         str      r12,[r5,#0x2c]
    249         smlal    r2,lr,r0,r2
    250         str      lr,[r5,#0x28]
    251         ldr      r1,[r6,#4]
    252         ldr      r12,[r7,#0x48]
    253         mov      r2,r1,lsl #1
    254         ldr      r1,[r6,#0x20]
    255         ldr      r0,[r6]
    256         mov      r1,r1,lsl #1
    257         smull    r4,lr,r12,r1
    258         ldr      r3,[r6,#0x1c]
    259         str      lr,[r6]
    260         ldr      r12,[r7,#0x4c]
    261         mov      r3,r3,lsl #1
    262         smull    r4,lr,r12,r3
    263         mov      r0,r0,lsl #1
    264         ldr      r12,[r7,#0x64]
    265         str      lr,[r6,#4]
    266         smull    r4,lr,r12,r2
    267         ldr      r12,[r7,#0x68]
    268         str      lr,[r6,#0x1c]
    269         smull    r4,lr,r12,r0
    270         ldr      r12,[r7,#0x6c]
    271         str      lr,[r6,#0x20]
    272         smull    lr,r0,r12,r0
    273         ldr      r12,[r7,#0x70]
    274         str      r0,[r6,#0x24]
    275         smull    r0,r2,r12,r2
    276         ldr      r0,[r7,#0x88]
    277         str      r2,[r6,#0x28]
    278         smull    r3,r2,r0,r3
    279         ldr      r0,[r7,#0x8c]
    280         str      r2,[r6,#0x40]
    281         smull    r2,r1,r0,r1
    282         str      r1,[r6,#0x44]
    283         ldr      r0,[r6,#0x18]
    284         ldr      lr,[r7,#0x50]
    285         mov      r1,r0,lsl #1
    286         ldr      r0,[r6,#0x14]
    287         smull    r5,r4,lr,r1
    288         ldr      r12,[r6,#0x10]
    289         mov      r3,r0,lsl #1
    290         ldr      r0,[r6,#0xc]
    291         mov      r12,r12,lsl #1
    292         mov      r2,r0,lsl #1
    293         ldr      r0,[r6,#8]
    294         str      r4,[r6,#8]
    295         ldr      lr,[r7,#0x54]
    296         mov      r0,r0,lsl #1
    297         smull    r5,r4,lr,r3
    298         ldr      lr,[r7,#0x58]
    299         str      r4,[r6,#0xc]
    300         smull    r5,r4,lr,r12
    301         ldr      lr,[r7,#0x5c]
    302         str      r4,[r6,#0x10]
    303         smull    r5,r4,lr,r2
    304         ldr      lr,[r7,#0x60]
    305         str      r4,[r6,#0x14]
    306         smull    r5,r4,lr,r0
    307         ldr      lr,[r7,#0x74]
    308         str      r4,[r6,#0x18]
    309         smull    r4,r0,lr,r0
    310         ldr      lr,[r7,#0x78]
    311         str      r0,[r6,#0x2c]
    312         smull    r0,r2,lr,r2
    313         ldr      r0,[r7,#0x7c]
    314         str      r2,[r6,#0x30]
    315         smull    r12,r2,r0,r12
    316         ldr      r0,[r7,#0x80]
    317         str      r2,[r6,#0x34]
    318         smull    r3,r2,r0,r3
    319         ldr      r0,[r7,#0x84]
    320         str      r2,[r6,#0x38]
    321         smull    r2,r1,r0,r1
    322         str      r1,[r6,#0x3c]
    323         ldmfd    sp!,{r4-r10,pc}
    324 table
    325         DCD      cosTerms_dct18
    326         ENDP
    327 
    328 ;------------------------------------------------------------------------------
    329 
    330  AREA |.constdata|, DATA, READONLY, ALIGN=2
    331 
    332 ;------------------------------------------------------------------------------
    333 
    334 cosTerms_dct18
    335         DCD      0x0807d2b0
    336         DCD      0x08483ee0
    337         DCD      0x08d3b7d0
    338         DCD      0x09c42570
    339         DCD      0x0b504f30
    340         DCD      0x0df29440
    341         DCD      0x12edfb20
    342         DCD      0x1ee8dd40
    343         DCD      0x5bca2a00
    344 cosTerms_1_ov_cos_phi
    345         DCD      0x400f9c00
    346         DCD      0x408d6080
    347         DCD      0x418dcb80
    348         DCD      0x431b1a00
    349         DCD      0x4545ea00
    350         DCD      0x48270680
    351         DCD      0x4be25480
    352         DCD      0x50ab9480
    353         DCD      0x56ce4d80
    354         DCD      0x05ebb630
    355         DCD      0x06921a98
    356         DCD      0x0771d3a8
    357         DCD      0x08a9a830
    358         DCD      0x0a73d750
    359         DCD      0x0d4d5260
    360         DCD      0x127b1ca0
    361         DCD      0x1ea52b40
    362         DCD      0x5bb3cc80
    363 
    364 
    365 
    366         END
    367