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_9.s
     21 ;
     22 ;------------------------------------------------------------------------------
     23 ; REVISION HISTORY
     24 ;
     25 ;
     26 ; Who:                                   Date: MM/DD/YYYY
     27 ; Description:
     28 ;
     29 ;------------------------------------------------------------------------------
     30 
     31   AREA  |.drectve|, DRECTVE
     32 
     33     DCB "-defaultlib:coredll.lib "
     34     DCB "-defaultlib:corelibc.lib "
     35 
     36   IMPORT pvmp3_mdct_18 ; pvmp3_mdct_18.cpp
     37 
     38 ;------------------------------------------------------------------------------
     39 
     40   AREA  |.rdata|, DATA, READONLY
     41   % 4
     42 
     43 
     44 ;------------------------------------------------------------------------------
     45 
     46   AREA  |.text|, CODE, READONLY
     47 
     48 
     49 ;------------------------------------------------------------------------------
     50 
     51  EXPORT |pvmp3_dct_9|
     52 
     53 |pvmp3_dct_9| PROC
     54         stmfd    sp!,{r4-r10,lr}
     55         ldr      r2, [r0, #0x20]
     56         ldr      r3, [r0]
     57         ldr      r12,[r0, #4]
     58         add      r1,r2,r3
     59         sub      lr,r2,r3
     60         ldr      r3,[r0, #0x1c]
     61         ldr      r4,[r0, #0x18]
     62         add      r2,r3,r12
     63         ldr      r5,[r0,#8]
     64         sub      r3,r3,r12
     65         add      r12,r4,r5
     66         sub      r4,r4,r5
     67         ldr      r5,[r0, #0x14]
     68         ldr      r7,[r0, #0xc]
     69         ldr      r9,[r0, #0x10]
     70         add      r6,r5,r7
     71         sub      r5,r5,r7
     72         add      r7,r1,r12
     73         add      r8,r9,r2
     74         add      r7,r7,r6
     75         add      r10,r7,r8
     76         rsb      r7,r8,r7,asr #1
     77         str      r7,[r0, #0x18]
     78         rsb      r2,r9,r2,asr #1
     79         str      r10,[r0]
     80         ldr      r11,|cos_2pi_9|
     81         rsb      r7,r2,#0
     82 
     83         mov      r9,r1,lsl #1
     84 		mov      r1,r9			;;;;;;  !!!!!!
     85         mov      r8,r7
     86 
     87 ;    vec[4]  = fxp_mac32_Q32( vec[4], tmp0<<1, cos_2pi_9);
     88 
     89         smlal    r1,r8,r11,r9
     90         ldr      r10,|cos_4pi_9|
     91         ldr      r11,|cos_pi_9|
     92 
     93 ;    vec[8]  = fxp_mac32_Q32( vec[8], tmp0<<1, cos_4pi_9);
     94 
     95         smlal    r1,r7,r10,r9
     96 
     97 
     98 
     99 ;    vec[2]  = fxp_mac32_Q32( vec[2], tmp0<<1, cos_pi_9);
    100 
    101         smlal    r9,r2,r11,r9
    102         mov      r1,r12,lsl #1
    103         rsb      r9,r10,#0
    104         ldr      r11,|cos_5pi_9|
    105 
    106         smlal    r12,r2,r9,r1
    107 
    108 
    109 
    110 ;    vec[2]  = fxp_mac32_Q32( vec[2], tmp2<<1, cos_5pi_9);
    111 
    112         ldr      r9,|cos_2pi_9|
    113         mov      r12,r1			;;;;;;  !!!!!!
    114         smlal    r12,r8,r11,r1
    115 
    116 
    117 ;    vec[8]  = fxp_mac32_Q32( vec[8], tmp2<<1, cos_2pi_9);
    118 
    119         smlal    r1,r7,r9,r1
    120         mov      r1,r6,lsl #1
    121         smlal    r12,r7,r11,r1
    122         and      r6,r10,r11,asr #14
    123         smlal    r12,r8,r6,r1
    124         ldr      r10,|cos_11pi_18|
    125         add      r12,r11,r6
    126         smlal    r1,r2,r12,r1
    127         ldr      r9,|cos_8pi_9|
    128         str      r2,[r0,#8]
    129         mov      r1,r5,lsl #1
    130 
    131 ;    vec[8]  = fxp_mac32_Q32( vec[8], tmp3<<1, cos_8pi_9);
    132 
    133         smull    r2,r6,r9,r1
    134         str      r7,[r0,#0x20]
    135         mov      r2,r4,lsl #1
    136         ldr      r7,|cos_13pi_18|
    137         smlal    r12,r6,r10,r2
    138 
    139         mov      r3,r3,lsl #1
    140 
    141 ;    vec[5]  = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18);
    142 
    143         smlal    r12,r6,r7,r3
    144         add      r4,r5,r4
    145         mov      r12,lr,lsl #1
    146         sub      lr,r4,lr
    147         ldr      r7,|cos_17pi_18|
    148         str      r8,[r0, #0x10]
    149         ldr      r4,|cos_pi_6|
    150 
    151         mov      lr,lr,lsl #1
    152 
    153 ;    vec[1]  = fxp_mac32_Q32( vec[1], tmp8<<1, cos_17pi_18);
    154 
    155         smlal    r8,r6,r7,r12
    156 
    157 ;    vec[3]  = fxp_mul32_Q32((tmp5 + tmp6  - tmp8)<<1, cos_pi_6);
    158 
    159         smull    r5,lr,r4,lr
    160         str      r6,[r0, #4]
    161         str      lr,[r0, #0xc]
    162 
    163 
    164 ;    vec[5]  = fxp_mul32_Q32(tmp5<<1, cos_17pi_18);
    165         smull    r5,lr,r7,r1
    166         rsb      r6,r9,#0
    167 ;    vec[5]  = fxp_mac32_Q32( vec[5], tmp6<<1,  cos_7pi_18);
    168         smlal    r5,lr,r6,r2
    169 ;    vec[5]  = fxp_mac32_Q32( vec[5], tmp7<<1,    cos_pi_6);
    170         smlal    r5,lr,r4,r3
    171 ;    vec[5]  = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18);
    172         smlal    r5,lr,r10,r12
    173         str      lr,[r0, #0x14]
    174         rsb      lr,r10,#0
    175 
    176 ;    vec[7]  = fxp_mul32_Q32(tmp5<<1, cos_5pi_18);
    177         smull    r5,r1,lr,r1
    178 ;    vec[7]  = fxp_mac32_Q32( vec[7], tmp6<<1, cos_17pi_18);
    179         smlal    r2,r1,r7,r2
    180 ;    vec[7]  = fxp_mac32_Q32( vec[7], tmp7<<1,    cos_pi_6);
    181         smlal    r3,r1,r4,r3
    182 ;    vec[7]  = fxp_mac32_Q32( vec[7], tmp8<<1, cos_11pi_18);
    183         smlal    r12,r1,r9,r12
    184         str      r1,[r0, #0x1c]
    185         ldmfd    sp!,{r4-r10,pc}
    186 |cos_2pi_9|
    187         DCD      0x620dbe80
    188 |cos_4pi_9|
    189         DCD      0x163a1a80
    190 |cos_pi_9|
    191         DCD      0x7847d900
    192 |cos_5pi_9|
    193         DCD      0x87b82700
    194 |cos_8pi_9|
    195         DCD      0xd438af00
    196 |cos_11pi_18|
    197         DCD      0xadb92280
    198 |cos_13pi_18|
    199         DCD      0x91261480
    200 |cos_17pi_18|
    201         DCD      0x81f1d200
    202 |cos_pi_6|
    203         DCD      0x6ed9eb80
    204         ENDP
    205 
    206 
    207 
    208 
    209 
    210         END
    211